java:inheritance

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision Both sides next revision
java:inheritance [2015/02/13 12:42]
gthanos
java:inheritance [2015/02/13 13:01]
gthanos
Line 76: Line 76:
 } }
 </​code>​ </​code>​
 +
 +===== Προσβασιμότητα των κληρονομούμενων πεδίων =====
 +
 +Μία κλάση η οποία κληρονομεί μία άλλη κλάση έχει πρόσβαση στα μέλη (πεδία και μεθόδους) της κλάσης αυτής ως εξής:
 +
 +  * Έχει πρόσβαση στα //public// και //​protected//​ μέλη της γονικής κλάσης
 +  * Έχει πρόσβαση στα //package private// μέλη (δηλ. τα μέλη χωρίς προσδιοριστή πρόσβασης) μόνο αν βρίσκεται στο ίδιο πακέτο με την γονική κλάση.
 +  * Δεν έχει πρόσβαση στα //private// μέλη της κλάσης. ​
 +
 +Αν υπάρχουν //public// μέθοδοι οι οποίες επιτρέπουν την πρόσβαση σε //private// πεδία, τότε αυτές μπορούν να χρησιμοποιηθούν για τον ορισμό ή για την λήψη της τιμής τους.
 +
 +===== Τι μπορούμε να κάνουμε σε μία υποκλάση... =====
 +
 +  * Να χρησιμοποιήσουμε τα πεδία της γονικής κλάσης στα οποία έχουμε πρόσβαση (public, protected, package-private στο ίδιο package).
 +  * Να ορίσουμε νέα πεδία.
 +  * Να ορίσουμε νέα πεδία που να έχουν ίδιο όνομα με πεδία της γονικής κλάσης. Σε αυτή την περίπτωση "​κρύβουμε"​ τα πεδία της γονικής κλάσης. Η συγκεκριμένη πρακτική δεν συνίσταται και παραπέμπει σε λανθασμένη σχεδίαση κώδικα.
 +  * Να χρησιμοποιήσουμε τις μεθόδους της γονικής κλάσης στις οποίες έχουμε πρόσβαση (public, protected, package-private στο ίδιο package).
 +  * Μπορούμε να γράψουμε νέες στατικές ή μη στατικές μεθόδους για τη υποκλάση.
 +  * Μπορούμε να γράψουμε νέες μεθόδους που έχουν το ίδιο //​signature//​ (ίδιο όνομα, ίδιο αριθμό και ίδιο τύπο ορισμάτων),​ ώστε να επαναορίσουμε (//​override//​) τις μεθόδους αυτές στην υποκλάση. Η πρακτική αυτή είναι συνήθης.
 +  * Μπορούμε να γράψουμε νέες στατικές (//​static//​) μεθόδους που έχουν το ίδιο //​signature//,​ ώστε να επαναορίσουμε (//​override//​) τις μεθόδους αυτές στην υποκλάση. Επαναορίζοντας στατικές μεθόδους,​ κρύβουμε τις αντίστοιχες μεθόδους της γονικής κλάσης.
 +  * 
 +
 +
java/inheritance.txt · Last modified: 2016/03/31 08:25 by doufexi