Inutile de dire que cette méthode est plus facile à comprendre, en appelant le constructeur de la classe parent dans la sous-classe. De plus, l'un des plus grands avantages de cette méthode est que l'héritage structurel peut réaliser un héritage multiple. Consultez ce code :
.Mais cette méthode a aussi des défauts de ceci et de cela :
Pour ceux qui sont familiers avec l'orienté objet, jetons un coup d'œil à ce morceau de code C# :
Quel est le résultat ? b est bien sûr une instance de A :
Cependant, faisons ce test sur le code Javascript ci-dessus qui utilise l'héritage structurel :
Mais le résultat n'était pas celui que nous avions imaginé :
En fait, c'est facile à expliquer : l'héritage structurel ne copie les attributs de la classe parent qu'en appelant la méthode constructeur de la classe parent, et ne fait rien d'autre, donc de nombreux matériaux n'appellent pas cette méthode d'héritage héritage.
Tout en voyant les inconvénients, rappelez-vous également les avantages : prend en charge l'héritage multiple.
Examinons l'héritage en C# et constatons qu'il existe deux différences les plus typiques avec cet héritage : C# ne prend pas en charge l'héritage multiple et les lacunes de l'héritage structurel que j'ai mentionnées ci-dessus. Une nouvelle méthode d’héritage est donc apparue, que nous avons appelée héritage prototypique.
En voyant le nom, vous pouvez à peu près comprendre que l'héritage prototypique utilise les caractéristiques du prototype pour réaliser l'héritage. Il s'agit de la méthode d'héritage la plus populaire en Javascript. Si vous ne comprenez pas les prototypes, veuillez suivre mon autre article : "Jouer avec les prototypes - Prototype".
Regardons d'abord le code. Ici, j'emprunte un morceau de code à "The Return of the Javascript King" :
Test réussi. Cela montre que Point2D a hérité des méthodes de la classe parent. Regardons à nouveau l'instance.
alerte(p instanceof Point);
Succès ! Bon, analysons l'héritage prototypique :
Je n'entrerai pas dans les détails sur les avantages de l'héritage prototypique. La structure est simple, facile à comprendre et elle peut être instanciée. Mais ses défauts sont tout aussi évidents. Vous souvenez-vous encore de l’exemple d’Animal, People, Girl dans mon dernier article ? Nous utilisons l'héritage prototypique pour y parvenir :
Impossible d'implémenter plusieurs interfaces !
D'accord, c'est tout pour aujourd'hui. Pour résumer, l'héritage prototype résout certains problèmes d'héritage structurel et introduit de nouveaux problèmes. D'une manière générale, l'héritage prototypique est la méthode d'héritage la plus largement utilisée, et c'est aussi le véritable moyen d'implémenter l'héritage dans la grammaire Javascript !