Wise_One Δημοσ. 5 Δεκεμβρίου 2007 Δημοσ. 5 Δεκεμβρίου 2007 Είναι άσκηση που την έχω λύσει πριν ένα χρόνο αλλά κάθομαι να την ξανακάνω τώρα. Βλέπω τον κώδικα που είχα γράψει, αλλά τώρα δε μου φαίνεται σωστός. Εχουμε τα εξής: > public class Ypallilos{ private String onoma, mitrwo, eidikotita, katoikia; public Ypallilos(String onoma, String mitrwo, String eidikotita, String katoikia){ this.onoma = onoma; this.mitrwo = mitrwo; this.eidikotita = eidikotita; this.katoikia = katoikia; } //me8odoi set/get gia epe3ergasia twn private metavlitwn } ####################################################### public class Wromis8ioi extends Ypallilos{ private int wres; public Wromis8ioi(int wres){ //super(onoma, mitrwo, eidikotita, katoikia); (*) this.wres = wres; } //set/get me8odos } (*) Αν βγάλω τα σχόλια απ' την εντολή, όπως είναι λογικό χτυπάει ο compiler λέγοντας πως είναι private μεταβλητές. Τί γράφω ρε παιδιά για να καλέσει τον γονικό παραμετρικό δομητή; Μια λύση (αυτή που έκανα στον προηγούμενο κώδικα) είναι να μη βάλω δομητές και να χρησιμοποιηθεί ο default στη δημιουργία αντικειμένου της κλάσης Ωρομίσθιοι. Εγώ όμως θέλω να βάλω κανονικά όλους τους δομητές.
Dikemou Δημοσ. 6 Δεκεμβρίου 2007 Δημοσ. 6 Δεκεμβρίου 2007 Κάνεις protected τις μεταβλητές, αλλά η λογική σου είναι λάθος. Οι μεταβλητές που περνάς με την super() στο Ypallilos θα πρέπει να εισάγονται σαν παράμετροι στον δομητή του Wromis8ioi, όχι να τις κατεβάζεις και να τις ξανανεβάζεις!
Wise_One Δημοσ. 6 Δεκεμβρίου 2007 Μέλος Δημοσ. 6 Δεκεμβρίου 2007 Φίλε μου έχεις απόλυτο δίκιο. Ο δομητής του Ωρομίσθιοι θα έχει πάλι τις μεταβλητές που έχει κληρονομήσει μόνο που αυτές δίνονται στον super() δομητή. Τις άλλες τις περνάω κανονικά. Τώρα που το δοκίμασα δουλεύει άψογα. Σ' ευχαριστώ πολύ.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.