web-dev-qa-db-fra.com

Quelle est la différence entre la surcharge et le dépassement de méthode?

Quelle est la différence entre surcharge une méthode et substitution une méthode? Quelqu'un peut-il l'expliquer avec un exemple?

42
user1662177

La surcharge de la méthode traite de la notion d'avoir deux méthodes ou plus dans la même classe avec le même nom mais des arguments différents.

void foo(int a)
void foo(int a, float b)

Méthode surcharger signifie avoir deux méthodes avec les mêmes arguments, mais des implémentations différentes. L'un d'eux existerait dans la classe parente, tandis qu'un autre serait dans la classe dérivée ou enfant. Le @Override annotations, bien que non requises, peuvent être utiles pour appliquer le remplacement approprié d'une méthode au moment de la compilation.

class Parent {
    void foo(double d) {
        // do something
    }
}

class Child extends Parent {

    @Override
    void foo(double d){
        // this method is overridden.  
    }
}
129
Hisham Muneer

La méthode est redéfinie est le moment où une classe enfant redéfinit la même méthode que la classe parent, avec les mêmes paramètres. Par exemple , le standard Java class Java.util.LinkedHashSet S'étend Java.util.HashSet. La méthode add() est remplacé dans LinkedHashSet. Si vous avez une variable de type HashSet et que vous appelez sa méthode add(), elle appellera le implémentation appropriée de add(), selon qu'il s'agisse d'un HashSet ou d'un LinkedHashSet. C'est ce qu'on appelle un polymorphisme.

Surcharge de méthode définit plusieurs méthodes dans la même classe, acceptant différents nombres et types de paramètres. Dans ce cas, la méthode réelle appelée est décidée au moment de la compilation, en fonction du nombre et du type d'arguments. Par exemple , la méthode System.out.println() est surchargée, de sorte que vous pouvez transmettre des ints ainsi que des chaînes, et elle appellera une autre version de la méthode.

35
Jainendra