Εκτός από την κληρονομικότητα τύπου 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 |
Ανάλογα με τον είδος της κληρονομικότητας που θα επιλέξουμε, μπορούμε να έχουμε κρύψουμε μερικώς ή ολικώς τα μέρη της γονικής κλάσης. Πιο αναλυτικά, έχουμε τα εξής:
Δείτε το παρακάτω παράδειγμα που παραθέτει αναλυτικά τα επίπεδα της προσβασιμότητας
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 };
Στο παραπάνω παράδειγμα συμπερασματικά θα μπορούσαμε να πούμε τα εξής: