User Tools

Site Tools


cpp:inheritance_protected_private

This is an old revision of the document!


Άλλες μορφές κληρονομικότητας

Εκτός από την κληρονομικότητα τύπου public (class Square: public Rectangle { };) μπορείτε να έχετε κληρονομικότητα τύπου protected και private. Σε αυτές τις περιπτώσεις η προσβασιμότητα των πεδίων της γονικής κλάσης δίνεται από τον παραπάνω πίνακα

είδος κληρονομικότητας
μέλη της γονικής κλάσης public protected private
public μέλη public protected private
protected μέλη protected protected private
private μέλη not accessible not accessible not accessible

Δείτε το παρακάτω παράδειγμα που παραθέτει αναλυτικά τα επίπεδα της προσβασιμότητας

PrivateProtectedInheritance.cpp
class Parent {
public:
    int publicMember;
protected:
    int protectedMember;
private:
    int privateMember;
};
 
class ChildA : public Parent {
    // publicMember is public
    // protectedMember is protected
    // privateMember is not accessible from ChildA
};
 
class ChildB : protected Parent {
    // publicMember is protected
    // protectedMember is protected
    // privateMember is not accessible from ChildB
};
 
class ChildC : private Parent {   // 'private' is default for classes
    // publicMember is private (accessible)
    // protectedMember is private  (accessible)
    // privateMember is not accessible from ChildC
};

Στο παραπάνω παράδειγμα συμπερασματικά θα μπορούσαμε να πούμε τα εξής:

  • Για την κλάση ChildA (public κληρονομικότητα) οποιαδήποτε κλάση γνωρίζει ότι η ChildA είναι απόγονος της Parent.
  • Για την κλάση ChildB (protected κληρονομικότητα), μόνο η κλάση ChildB και η απόγονοι αυτής γνωρίζει ότι η ChildB είναι απόγονος της Parent.
  • Για την κλάση ChildC (private κληρονομικότητα), μόνο η κλάση ChildC γνωρίζει ότι η ChildC είναι απόγονος της Parent.

Η κληρονομικότητα τύπου private ή protected έχει περιορισμένη χρήση.

cpp/inheritance_protected_private.1551939602.txt.gz · Last modified: 2019/03/07 06:20 by gthanos