User Tools

Site Tools


cpp:inheritance_protected_private

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
cpp:inheritance_protected_private [2017/05/11 08:54] gthanoscpp:inheritance_protected_private [2022/05/13 07:06] (current) gthanos
Line 1: Line 1:
 ===== Άλλες μορφές κληρονομικότητας ===== ===== Άλλες μορφές κληρονομικότητας =====
  
-Εκτός από την κληρονομικότητα τύπου //public// (''class Square: public Rectangle { };'') μπορείτε να έχετε κληρονομικότητα τύπου //protected// και //private//. Σε αυτές τις περιπτώσεις η προσβασιμότητα των πεδίων της γονικής κλάσης δίνεται από τον παραπάνω πίνακα+Εκτός από την κληρονομικότητα τύπου //public// (''class Square: public Rectangle { };'') μπορείτε να έχετε κληρονομικότητα τύπου //protected// και //private//. Σε αυτές τις περιπτώσεις τα πεδία που κληρονομούνται μεταβάλλουν την προσβασιμότητα τους στις υποκλάσεις με βάση τον παρακάτω πίνακα
 ^    είδος κληρονομικότητας  ^^^ ^    είδος κληρονομικότητας  ^^^
 ^  μέλη της γονικής κλάσης  ^  public  ^  protected  ^  private  ^ ^  μέλη της γονικής κλάσης  ^  public  ^  protected  ^  private  ^
-| public μέλη  |  public  |  protected  |  not accessible  | +| public μέλη  |  public  |  protected  |  private  | 
-| protected μέλη  |  protected  |  protected  |  not accessible   |+| protected μέλη  |  protected  |  protected  |  private   |
 | private μέλη  |  not accessible  |  not accessible  |  not accessible  | | private μέλη  |  not accessible  |  not accessible  |  not accessible  |
 +
 +Ανάλογα με τον είδος της κληρονομικότητας που θα επιλέξουμε, μπορούμε να έχουμε κρύψουμε μερικώς ή ολικώς τα μέρη της γονικής κλάσης. Πιο αναλυτικά, έχουμε τα εξής:
 +  * Στην //public// κληρονομικότητα τα μέλη της γονικής κλάσης δεν μεταβάλλουν την προσβασιμότητα τους.
 +  * Στην //protected// κληρονομικότητα τα μέλη της γονικής κλάσης που είναι //public// γίνονται //protected// για την υποκλάση. Πρακτικά, μόνο η υποκλάση και οι υποκλάσεις που θα προκύψουν από αυτή μπορούν να γνωρίζουν την ύπαρξη της συγκεκριμένης σχέσης κληρονομικότητας.
 +  * Στην //private// κληρονομικότητα τα μέλη της γονικής κλάσης που είναι //public// ή //protected// γίνονται //private// για την υποκλάση. Πρακτικά, μόνο η υποκλάση γνωρίζει την ύπαρξη της συγκεκριμένης σχέσης κληρονομικότητας.
  
 Δείτε το παρακάτω παράδειγμα που παραθέτει αναλυτικά τα επίπεδα της προσβασιμότητας Δείτε το παρακάτω παράδειγμα που παραθέτει αναλυτικά τα επίπεδα της προσβασιμότητας
Line 41: Line 47:
 Στο παραπάνω παράδειγμα συμπερασματικά θα μπορούσαμε να πούμε τα εξής: Στο παραπάνω παράδειγμα συμπερασματικά θα μπορούσαμε να πούμε τα εξής:
   * Για την κλάση //ChildA// (//public// κληρονομικότητα) οποιαδήποτε κλάση γνωρίζει ότι η //ChildA// είναι απόγονος της //Parent//.   * Για την κλάση //ChildA// (//public// κληρονομικότητα) οποιαδήποτε κλάση γνωρίζει ότι η //ChildA// είναι απόγονος της //Parent//.
-  * Για την κλάση //ChildB// (//protected// κληρονομικότητα), μόνο η κλάση //ChildB// και η απόγονοι αυτής γνωρίζει ότι η //ChildB// είναι απόγονος της //Parent//.+  * Για την κλάση //ChildB// (//protected// κληρονομικότητα), μόνο η κλάση //ChildB// και η απόγονοι αυτής γνωρίζουν ότι η //ChildB// είναι απόγονος της //Parent//.
   * Για την κλάση //ChildC// (//private// κληρονομικότητα), μόνο η κλάση //ChildC// γνωρίζει ότι η //ChildC// είναι απόγονος της //Parent//.   * Για την κλάση //ChildC// (//private// κληρονομικότητα), μόνο η κλάση //ChildC// γνωρίζει ότι η //ChildC// είναι απόγονος της //Parent//.
- 
-<WRAP center round tip 80%> 
-Η κληρονομικότητα τύπου //private// ή //protected// έχει περιορισμένη χρήση. 
-</WRAP> 
  
cpp/inheritance_protected_private.1494492893.txt.gz · Last modified: 2017/05/11 07:54 (external edit)