Qu'est-ce que la méthode prioritaire?
Le remplacement de méthode est utilisé dans la programmation orientée objet dans une hiérarchie d'héritage et se produit lorsqu'une méthode définie dans une superclasse est redéfinie dans une sous-classe. Habituellement, la méthode de la sous-classe fait quelque chose de différent de la méthode de la super-classe ou étend les capacités de la super-classe, mais ce n'est pas obligatoirement le cas. La méthode est surchargée chaque fois qu'une méthode superclasse est redéfinie dans une sous-classe, quel que soit le contenu de la méthode redéfinie. Les signatures de méthode redéfinies doivent être exactement les mêmes.
Par exemple, une classe A peut contenir une méthode appelée "doSomething" et cette méthode ne prend aucun paramètre d'entrée. En outre, les classes B et C peuvent être des sous-classes de la classe A. La classe B peut contenir une méthode appelée "doSomething", qui ne prend aucun paramètre d'entrée, et la classe C peut contenir une méthode "doSomething" qui prend un nombre en tant que paramètre d'entrée. Dans cet exemple, seule la classe B montrerait une méthode surchargée, car sa méthode "doSomething" a la même signature que sa superclasse, classe A. La méthode "doSomething" de la classe C, en revanche, illustre la surcharge de la méthode car elle crée une méthode complètement nouvelle.
L'héritage virtuel en C ++ est un autre exemple de substitution de méthode. Les méthodes virtuelles dans les superclasses peuvent ou non être implémentées, mais toute définition de sous-classe de celles-ci est une instance de substitution de méthode. Lorsqu'une méthode est substituée dans une sous-classe, la méthode de la superclasse n'est pas appelée à moins d'être explicitement appelée. On dit souvent que cette manière spécifique d’appeler une méthode substituée "cache" la mise en oeuvre de la super-classe.
Bien que le remplacement de méthode soit très flexible, il n’est pas possible de remplacer toutes les méthodes et cette rigidité peut parfois être préférable. En Java et en C ++, des mots-clés spécifiques peuvent être appliqués dans les signatures de méthode pour empêcher le remplacement d'une méthode dans une sous-classe. Pour ce faire, Java utilise le mot clé "final" et C ++ utilise le mot clé "const". Empêcher le remplacement de méthode peut être bénéfique si une fonction particulière doit toujours rester inchangée dans un arbre d'héritage.
En général, les méthodes simples qui obtiennent de petites quantités de données ne doivent pas nécessairement être remplacées. Les cas où la sous-classe a le plus grand intérêt à remplacer sont généralement les cas où une sous-classe vise à ajouter des fonctionnalités à une méthode de super-classe sans créer de méthode entièrement nouvelle. Les cas inhabituels dans lesquels une méthode doit être complètement refaite pour un type d'objet spécifique pourraient également bénéficier de cette technique. Chaque fois qu'une méthode est remplacée, il est important que le programmeur commente correctement les méthodes de la superclasse et de la sous-classe. Idéalement, ces commentaires devraient clarifier le rôle de chaque variante de la méthode, ainsi que la manière et la raison pour laquelle ils diffèrent.