Quelle est la différence entre surcharger une méthode et la remplacer en Java?
Y a-t-il une différence dans la signature de la méthode, le spécificateur d'accès, le type de retour, etc.?
java
object-oriented
user63948
la source
la source
Réponses:
Pour surcharger une méthode avec une nouvelle méthode, la nouvelle méthode doit avoir une signature différente. C'est-à-dire que deux méthodes surchargées ont le même nom, mais des paramètres différents. Voici un exemple de deux méthodes surchargées:
En fonction des types de paramètres, la méthode correspondante sera appelée. Notez que changer le type de retour n'est pas suffisant (bien que vous puissiez le faire en plus).
Lorsqu'une méthode est remplacée, la nouvelle méthode a la même signature et remplace la méthode substituée dans certains cas. Voici un exemple de méthode remplacée:
Le choix se fait en fonction du type d'objet. Par exemple,
appellera le
someMethod
deB
. Vous pouvez (et devez) ajouter l'annotation @Override:Maintenant, si vous modifiez accidentellement les paramètres dans B, le compilateur vous informera que vous ne remplacez pas someMethod () mais que vous le surchargez.
la source
Surcharge, les méthodes ont le même nom mais des paramètres différents.
Surcharge, l'implémentation donnée dans la classe de base est remplacée par celle dans la sous-classe.
la source
Les concepts que vous demandez sont traités dans les didacticiels Java.
L'explication de la substitution est donnée comme suit:
La surcharge est expliquée dans le didacticiel comme suit:
L'explication ci-dessus pour la surcharge mentionne les qualifications discutées dans la leçon intitulée "Interfaces et héritage" :
la source
La surcharge d'une méthode est généralement définie comme «fournir plusieurs méthodes disponibles avec le même nom, différant par le nombre et le type d'entrées et de sorties». Le concept est généralement que vous voulez être en mesure d'effectuer la même opération de base étant donné différents ensembles d'entrées: vous pouvez, par exemple, "ajouter" deux valeurs de type numérique, mais il est généralement important de savoir quel est le type exact de la valeur est telle que vous pouvez profiter ou planifier des comportements spécifiques de ce type. En tant que tel, vous définiriez une méthode pour chaque combinaison de types numériques (et ou de collections) que vous souhaitez prendre en charge. Toutes ces méthodes ont le même nom, mais des «signatures» différentes; au moment de la compilation,
Le remplacement d'une méthode est généralement défini comme "fournissant une implémentation différente dans une classe dérivée d'une méthode avec une signature particulière définie dans la classe de base". Il existe de nombreuses raisons de remplacer une méthode; pratiquement tous ont en commun le fait que la classe dérivée a une connaissance supplémentaire de ce qui doit être fait, ce qui ne peut pas être connu par la classe de base. Il existe deux types de priorité dans la plupart des langues OO; la substitution peut remplacer la méthode de classe de base, ou elle peut étendrela méthode de classe de base. La différence est généralement qu'une classe dérivée qui étend une implémentation de classe de base appellera la version redéfinie de la méthode de la classe de base à un moment donné pendant l'exécution de la méthode redéfinie. Cela permet aux classes prioritaires de "réutiliser" les zones communes de l'opération qui sont contenues dans la classe de base.
la source