Maison > Java > javaDidacticiel > Quelle est la différence entre la surcharge et la substitution de méthode ?

Quelle est la différence entre la surcharge et la substitution de méthode ?

Mary-Kate Olsen
Libérer: 2024-11-09 12:17:02
original
560 Les gens l'ont consulté

What's the difference between method overloading and overriding?

Surcharge de méthodes ou remplacement

La surcharge et le remplacement de méthodes sont deux concepts distincts de la programmation orientée objet qui partagent un point commun : ils impliquent tous deux redéfinir une méthode dans une classe. Cependant, leur objectif et leur implémentation diffèrent considérablement.

Surcharge de méthodes

La surcharge de méthodes se produit lorsqu'une classe déclare plusieurs méthodes avec le même nom mais des listes d'arguments différentes. Il permet à une seule méthode d'effectuer différentes tâches en fonction du type et du nombre d'arguments fournis. Par exemple :

public void foo(int a) { ... }
public void foo(int a, float b) { ... }
Copier après la connexion

Dans cet exemple, la classe définit deux versions de la méthode foo qui diffèrent par le nombre d'arguments qu'elles prennent. Lors de l'appel de la méthode foo, le compilateur détermine quelle version invoquer en fonction des arguments passés.

Le remplacement de méthode

Le remplacement de méthode, en revanche, implique de redéfinir un méthode avec la même liste d’arguments dans une sous-classe. Contrairement à la surcharge, la substitution se produit lorsqu'une classe enfant souhaite fournir sa propre implémentation d'une méthode héritée de la classe parent. Pour ce faire, la classe enfant doit utiliser l'annotation @Override pour indiquer qu'elle remplace une méthode existante :

class Parent {
    void foo(double d) { ... }
}

class Child extends Parent {

    @Override
    void foo(double d) { ... }
}
Copier après la connexion

Dans cet exemple, la classe Child remplace la méthode foo héritée de la classe Parent. Lorsqu'une instance de la classe Child appelle la méthode foo, l'implémentation remplacée dans la classe Child est exécutée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal