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

Εκτός από την κληρονομικότητα τύπου 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
};

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