1. Baleines et vaches
Voici un fait zoologique intéressant : une vache est beaucoup plus proche d'une baleine que, par exemple, d'un hippopotame. Il s'avère que les vaches et les baleines sont des parents relativement proches.
Regardez ici. Parlons du polymorphisme — un autre outil très puissant de la POO . Il a quatre fonctionnalités.
2. L'héritage n'est pas une panacée
Imaginez que vous avez écrit une Cow
classe pour un jeu. Il a de nombreux domaines et méthodes. Les objets de cette classe peuvent faire diverses choses : marcher, manger et dormir. Les vaches portent également une cloche qui sonne lorsqu'elles marchent. Supposons que vous ayez tout implémenté dans la classe dans les moindres détails.
Et puis votre client vient et dit qu'elle veut sortir un nouveau niveau de jeu, dans lequel toute l'action se déroule en mer, et le personnage principal est une baleine.
Vous commencez à concevoir une Whale
classe et réalisez qu'elle n'est que légèrement différente de la Cow
classe. La logique des deux classes est très similaire et vous décidez d'utiliser l'héritage.
La Cow
classe est idéale pour jouer le rôle de la classe mère : elle possède toutes les variables et méthodes nécessaires. Tout ce que nous devons faire, c'est donner à la baleine la capacité de nager. Mais il y a un problème : votre baleine a des pattes, des cornes et une cloche. Après tout, cette fonctionnalité est implémentée à l'intérieur de la Cow
classe. Que peut-on faire ici ?
3. Remplacer la méthode
Le dépassement de méthode vient à notre rescousse. Si nous avons hérité d'une méthode qui ne fait pas tout à fait ce que nous voulons dans notre nouvelle classe, nous pouvons remplacer cette méthode par une autre.
Comment est-ce fait? Dans notre classe descendante, nous déclarons la même méthode que la méthode de la classe parente que nous voulons surcharger. Nous y écrivons notre nouveau code. Et c'est tout — c'est comme si l'ancienne méthode de la classe parent n'existait tout simplement pas.
Voilà comment cela fonctionne:
Code | Description |
---|---|
|
|
|
Ce code affiche le texte suivant à l'écran :
|
|
Ce code affiche ce qui suit à l'écran :
|
Après avoir hérité de la Cow
classe et remplacé la printName
méthode, la Whale
classe contient en fait les données et méthodes suivantes :
|
Nous ne connaissons aucune ancienne méthode. |
GO TO FULL VERSION