1 Différentes méthodes d'héritage modifieront les attributs d'accès des membres hérités.
Les variables et méthodes publiques des membres modifiés peuvent être utilisées à la fois à l'intérieur et à l'extérieur de la classe.
Les variables et méthodes membres protégées sont utilisées à l'intérieur de la classe et dans les sous-classes héritées, et ne peuvent pas être utilisées en dehors de la classe. (Pour une utilisation dans la famille, pour l'héritage !)
Les variables et méthodes de membres privés modifiés ne peuvent être utilisées qu'à l'intérieur de la classe, pas en dehors de la classe
1) En C La méthode d'héritage affectera les attributs d'accès externes de la sous-classe
héritage public : les membres de la classe parent conservent le niveau d'accès d'origine dans la sous-classe
héritage privé : les membres de la classe parent deviennent des membres privés
héritage protégé : les membres publics de la classe parent deviendront protégés
les membres protégés de la classe parent seront toujours protégés
les membres privés de la classe parent seront toujours privés
2) Les membres privés existent toujours dans les sous-classes, mais sont inaccessibles. Quelle que soit la manière dont vous héritez d’une classe de base, une classe dérivée ne peut pas utiliser directement les membres privés de la classe de base.
3) Table attributaire d'accès externe de sous-classe en C
Niveau d'accès des membres de la classe parent
Méthode d'héritage
public(继承方式) proteced(继承方式) private(继承方式) public public proteced private proteced proteced proteced private private private private Private
Principe des trois regards :
La méthode d'héritage en C (publique, privée, protégée) affectera les attributs d'accès externes des sous-classes
Juger une certaine phrase, Si elle est accessible
1) Regardez l'instruction appelante Cette phrase est écrite à l'intérieur et à l'extérieur de la sous-classe
2) Regardez comment la sous-classe hérite de la classe parent (publique, privée). , protégé)
3) Regardez les niveaux d'accès (public, privé, protégé) dans la classe parent
Principes de définition du niveau d'accès pour les membres de la classe dérivée
Réflexion : Comment bien utiliser public, protected et private pour déclarer les niveaux d'accès des membres ?
1. Les membres auxquels le monde extérieur doit accéder sont directement définis comme publics
2. Les membres accessibles uniquement dans la classe actuelle sont définis comme privés
<🎜. >3. Ils ne sont accessibles que dans la classe actuelle. Les membres accessibles dans les classes et sous-classes sont définis comme protégés, et les droits d'accès des membres protégés sont compris entre public et privé.
Un objet de sous-classe peut être utilisé comme objet de classe parent
Un objet de sous-classe peut être directement affecté à un objet de classe parent
Les objets de sous-classe peuvent directement initialiser les objets de classe parent
Les pointeurs de classe parent peuvent pointer directement vers des objets de sous-classe
Les références de classe parent peuvent directement faire référence à des objets de sous-classe
Après substitution, dériver Les objets Class peuvent être utilisés comme objets de la classe de base, mais seuls les membres hérités de la classe de base peuvent être utilisés.
Les règles de compatibilité de types sont l'un des fondements importants du polymorphisme.
Signification de premier niveau :
Le pointeur de classe de base 1-1 (référence) pointe vers l'objet de sous-classe
Parent *p = Null; p = &c1; p->printp(); 1-2 指针做函数参数 howToPrint(&p1); howToprint(&c1); 1-3引用做函数参数 howToprint2(p1); howToprint2(c1);
Vous pouvez laisser les objets de la classe parent initialiser les objets de la sous-classe
Parent p3 = c1;
Modèle d'objet en trois héritages
Question : Comment initialiser les membres de la classe parent ? Quelle est la relation entre les constructeurs de la classe parent et de la sous-classe ?
Lors de la construction de l'objet de sous-classe, vous devez appeler le constructeur de la classe parent pour initialiser ses membres hérités
Dans l'analyse de l'objet de la sous-classe Lors de la construction, vous devez appeler le destructeur de la classe parent pour nettoyer ses membres hérités
2. Une fois l'exécution du constructeur de la classe parent terminée, le Le constructeur de la sous-classe sera exécuté
3 Lorsque le constructeur de la classe parent a des paramètres, l'appel doit être affiché dans la liste d'initialisation de la sous-classe
4. le destructeur est opposé à celui du constructeur