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
Previous revision
java:inheritance [2015/02/13 13:39]
gthanos
java:inheritance [2016/03/31 08:25] (current)
doufexi [Τι μπορούμε να κάνουμε σε μία υποκλάση...]
Line 1: Line 1:
 ====== Κληρονομικότητα ====== ====== Κληρονομικότητα ======
  
-Σε προηγούμενη παράγραφο, αναφερόμενοι στην κλάση έγινε [[:​java:​class#​Κληρονομικότητα Κλάσης αναφορά στην κληρονομικότητα ​κλάσεων]] στην JavaΚάθε ​κλάση που κληρονομεί από μία άλλη ​κλάση ονομάζεται υποκλάση (//​subclass//​) ​της γονικής κλάσης από ​την οποία ​κληρονομεί. Αντίστοιχα, η γονική κλάση ονομάζεται ​υπερκλάση (//​superclass//​) της ​κληρονομούμενης ​κλάσης.+Βασικό χαρακτηριστικό του αντικειμενοστραφούς ​προγραμματισμού είναι η δυνατότητα να παράγουμε ​νέες κλάσεις ​με βάση υφιστάμενες κλάσεις, εξειδικεύοντας και επεκτείνοντας ​τα χαρακτηριστικά τουςΗ διαδικασία ​επέκτασης των υφιστάμενων κλάσεων σε νέες ειδικότερες ​κλάσεις ​ονομάζεται κληρονομικότητα.
  
-{{  :​java:​super_sub_class.jpg  | }}+Κάθε κλάση που κληρονομεί από μία άλλη κλάση ονομάζεται υποκλάση (//​subclass//​) της γονικής κλάσης από την οποία κληρονομεί. Αντίστοιχα,​ η γονική κλάση ονομάζεται υπερκλάση (//​superclass//​) της κληρονομούμενης κλάσης.
  
-<WRAP tip> +{{  ​:java:super_sub_class.jpg  ​}}
-ΌΛΕΣ οι κλάσεις στην Java κληρονομούν την βασική κλάση [[http://​docs.oracle.com/​javase/​7/​docs/​api/​java/​lang/​Object.html | Object]]. Για παράδειγμα,​ η κλάση [[http://docs.oracle.com/​javase/​7/​docs/​api/​java/​lang/​String.htmlString]] κληρονομεί την κλάση Object. Την κλάση [[http://​docs.oracle.com/​javase/​7/​docs/​api/​java/​lang/​Object.html | Object]] θα την αναλύσουμε στη συνέχεια. +
-</​WRAP>​+
  
-Όπως φαίνεται και στο παραπάνω σχήμα μία κλάση (//​subclass//​) μπορεί να κληρονομεί __**ΜΟΝΟ ΜΙΑ**__ άλλη κλάση. Αντίστροφα μία κλάση (//​superclass//​) μπορεί να κληρονομεί πολλές διαφορετικές κλάσεις. Παρακάτω δίνουμε ​το παράδειγμα κληρονομικότητας που παρουσιάσαμε νωρίτερα ελαφρά παραλλαγμένο.+Όπως φαίνεται και στο παραπάνω σχήμα μία κλάση (//​subclass//​) μπορεί να κληρονομεί __**ΜΟΝΟ ΜΙΑ**__ άλλη κλάση. Αντίστροφα μία κλάση (//​superclass//​) μπορεί να κληρονομείται από ​πολλές διαφορετικές κλάσεις. Παρακάτω δίνουμε ​ένα ​παράδειγμα κληρονομικότητας ​από το site της [[https://​docs.oracle.com/​javase/​tutorial/​java/​IandI/​subclasses.html|Oracle]],​ όπου ​η κλάση ''​MountainBike'' ​αποτελεί εξειδίκευση της κλάσης ''​Bicycle''​.
  
 <code java Bicycle.java>​ <code java Bicycle.java>​
Line 84: Line 82:
 Μία κλάση η οποία κληρονομεί μία άλλη κλάση έχει πρόσβαση στα μέλη (πεδία και μεθόδους) της κλάσης αυτής ως εξής: Μία κλάση η οποία κληρονομεί μία άλλη κλάση έχει πρόσβαση στα μέλη (πεδία και μεθόδους) της κλάσης αυτής ως εξής:
  
-  * Έχει πρόσβαση στα //public// και //​protected//​ μέλη της γονικής κλάσης +  * Έχει πρόσβαση στα //**public**// και //**protected**// μέλη της γονικής κλάσης 
-  * Έχει πρόσβαση στα //package private// μέλη (δηλ. τα μέλη χωρίς προσδιοριστή πρόσβασης) μόνο αν βρίσκεται στο ίδιο πακέτο με την γονική κλάση. +  * Έχει πρόσβαση στα //**package private**// μέλη (δηλ. τα μέλη χωρίς προσδιοριστή πρόσβασης) μόνο αν βρίσκεται στο ίδιο πακέτο με την γονική κλάση. 
-  * Δεν έχει πρόσβαση στα //private// μέλη της κλάσης. ​+  * Δεν έχει πρόσβαση στα //**private**// μέλη της κλάσης. ​
  
-Αν υπάρχουν //public// μέθοδοι οι οποίες επιτρέπουν την πρόσβαση σε //private// πεδία, τότε αυτές μπορούν να χρησιμοποιηθούν για τον ορισμό ή για την λήψη της τιμής τους.+Αν υπάρχουν //**public**// μέθοδοι οι οποίες επιτρέπουν την πρόσβαση σε //**private**// πεδία, τότε αυτές μπορούν να χρησιμοποιηθούν για τον ορισμό ή για την λήψη της τιμής τους.
  
 ===== Τι μπορούμε να κάνουμε σε μία υποκλάση... ===== ===== Τι μπορούμε να κάνουμε σε μία υποκλάση... =====
Line 101: Line 99:
   * Μπορούμε να γράψουμε κατασκευαστές της υποκλάσης που χρησιμοποιούν κατασκευαστές της γονικής κλάσης.   * Μπορούμε να γράψουμε κατασκευαστές της υποκλάσης που χρησιμοποιούν κατασκευαστές της γονικής κλάσης.
  
-===== Implicit ​και ​Explicit Casting of Objects ===== +| Προηγούμενο : [[  :​java:​access_modifiers | Περιοριστές πρόσβασης ]] | [[ :toc | Περιεχόμενα ]] | Επόμενο:​ [[ :​java:​type_casting | Ρητές (explicit) ​και ​άρρητες (implicit) μετατροπές τύπων ]]  |
- +
- +
  
  
java/inheritance.1423834790.txt.gz · Last modified: 2016/02/26 11:15 (external edit)