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 | not accessible |
protected μέλη | protected | protected | not accessible |
private μέλη | not accessible | not accessible | not accessible |
Δείτε το παρακάτω παράδειγμα που παραθέτει αναλυτικά τα επίπεδα της προσβασιμότητας
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.1492881659.txt.gz · Last modified: 2017/04/22 16:21 (external edit)