Maison > Java > Javacommencer > La différence entre la surcharge et la réécriture en Java

La différence entre la surcharge et la réécriture en Java

(*-*)浩
Libérer: 2019-11-11 09:30:30
original
11003 Les gens l'ont consulté

La différence entre la surcharge et la réécriture en Java

Remplacement                                                                                                                                                                                      Je veux l'écrire à nouveau. En fait, il s'agit de réécrire les méthodes de la classe parent elle-même dans la sous-classe. La sous-classe hérite de la méthode d'origine de la classe parent, mais parfois la sous-classe ne veut pas hériter d'une méthode de la classe parent inchangée, donc le nom de la méthode, la liste des paramètres, le type de retour (sauf la valeur de retour de la méthode dans la sous-classe Quand la valeur de retour de la méthode dans la classe parent est la même que celle de la sous-classe, la modification ou la réécriture du corps de la méthode est appelée réécriture. Cependant, il convient de noter que les autorisations de modification d'accès des fonctions de sous-classe ne peuvent être inférieures à celles de la classe parent.

Par exemple :

public class Father {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Son s = new Son();
        s.sayHello();
    }
    public void sayHello() {
        System.out.println("Hello");
    }
}
class Son extends Father{
    @Override
    public void sayHello() {
        // TODO Auto-generated method stub
        System.out.println("hello by ");
    }

}
Copier après la connexion

Surcharge (Surcharge)

Dans une classe, si la méthode du même nom a différentes listes de paramètres (différents types de paramètres, nombre différent de paramètres ou même ordre différent des paramètres) sont considérées comme des surcharges. Dans le même temps, la surcharge n'exige pas de types de retour, qui peuvent être identiques ou différents, mais la surcharge ne peut pas être jugée selon que les types de retour sont identiques.

Par exemple :

public class Father {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Father s = new Father();
        s.sayHello();
        s.sayHello("wintershii");
    }

    public void sayHello() {
        System.out.println("Hello");
    }
    public void sayHello(String name) {
        System.out.println("Hello" + " " + name);
    }
}
Copier après la connexion

Au cours de l'entretien, a demandé : Quelle est la différence entre une surcharge et une dérogation ?

Réponse : Les méthodes de surcharge et de réécriture sont les deux moyens d'obtenir le polymorphisme. La différence est que la première implémente le polymorphisme au moment de la compilation, tandis que la seconde implémente le polymorphisme au moment de l'exécution.

Une surcharge se produit dans une classe. Si une méthode portant le même nom a une liste de paramètres différente (différents types de paramètres, un nombre différent de paramètres, ou les deux), cela est considéré comme une surcharge ; Entre la sous-classe et la classe parent, la substitution nécessite que la méthode surchargée de la sous-classe ait la même liste de paramètres que la méthode surchargée de la classe parent, ait un type de retour compatible, soit plus facile d'accès que la méthode surchargée de la classe parent, et ne peut pas être comparée à la méthode surchargée de la classe parent. La méthode surchargée de la classe parent déclare plus d'exceptions (principe de substitution de Liskov).

la surcharge n'a pas d'exigences particulières pour le type de retour et ne peut pas être distinguée en fonction du type de retour.

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!

Étiquettes associées:
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal