Quelle est la différence entre l'héritage multiple et multiniveau en C ++?


Réponse 1:

L'héritage multiple en C ++ utilise de nombreux objets différents comme blocs de construction pour un objet. C'est comme combiner une classe de pistolet et une classe de couteau pour créer une classe de couteau de pistolet. L'héritage à plusieurs niveaux est un objet héritant également des propriétés des classes de base de sa classe de base. Par exemple, comment une espèce hérite des biens de son genre jusqu'à son royaume.


Réponse 2:

C'est assez simple.

Dans l'héritage multiple, une seule classe est dérivée de plusieurs classes de base.

Dans l'héritage à plusieurs niveaux, une classe est dérivée d'une classe de base elle-même dérivée d'une autre classe de base.

Héritage multiple:

classe Base1 {...};
classe Base2 {...};
classe dérivée: public Base1, Base2 {...};

Héritage à plusieurs niveaux:

classe Base {...};
classe Derived1: public Base {...};
classe Derived2: public Derived1 {...};

Vous pouvez utiliser l'héritage multiple si une classe implémente plusieurs interfaces:

// Interfaces:
class DrawingSurface {/ * description de l'interface * /};
classe Shreddable {/ * description de l'interface * /};

// Chacun d'entre eux implémente uniquement l'une des interfaces:
classe Whiteboard: public DrawingSurface {...};
classe Carrot: public Shreddable {...};

// Celui-ci implémente à la fois:
Papier de classe: DrawingSurface public, Shreddable {...};

Vous pouvez utiliser l'héritage à plusieurs niveaux pour représenter une spécialisation supplémentaire d'une classe:

classe Animal {...};

// Les félins sont des animaux.
classe Félin: Public Animal {...};

// Ce sont des sortes de félins, qui sont transitoirement aussi des animaux:
classe HouseCat: félin public {...};
classe Tiger: félin public {...};
classe Lion: félin public {...};

Réponse 3:

C'est assez simple.

Dans l'héritage multiple, une seule classe est dérivée de plusieurs classes de base.

Dans l'héritage à plusieurs niveaux, une classe est dérivée d'une classe de base elle-même dérivée d'une autre classe de base.

Héritage multiple:

classe Base1 {...};
classe Base2 {...};
classe dérivée: public Base1, Base2 {...};

Héritage à plusieurs niveaux:

classe Base {...};
classe Derived1: public Base {...};
classe Derived2: public Derived1 {...};

Vous pouvez utiliser l'héritage multiple si une classe implémente plusieurs interfaces:

// Interfaces:
class DrawingSurface {/ * description de l'interface * /};
classe Shreddable {/ * description de l'interface * /};

// Chacun d'entre eux implémente uniquement l'une des interfaces:
classe Whiteboard: public DrawingSurface {...};
classe Carrot: public Shreddable {...};

// Celui-ci implémente à la fois:
Papier de classe: DrawingSurface public, Shreddable {...};

Vous pouvez utiliser l'héritage à plusieurs niveaux pour représenter une spécialisation supplémentaire d'une classe:

classe Animal {...};

// Les félins sont des animaux.
classe Félin: Public Animal {...};

// Ce sont des sortes de félins, qui sont transitoirement aussi des animaux:
classe HouseCat: félin public {...};
classe Tiger: félin public {...};
classe Lion: félin public {...};