De nombreux étudiants sont confus au sujet de la surcharge et du dépassement. Il est recommandé de ne pas mémoriser les connaissances conceptuelles par cœur mais de les comprendre et de les mémoriser.
Donnez-moi d'abord ma définition :
Surcharge : Dans la ou les mêmes classes avec des relations d'héritage, un groupe de noms porte le même nom. avec des paramètres différents. L'essence est le nom donné aux différentes méthodes.
Override : Entre deux classes ayant une relation d'héritage, les méthodes qui existent dans la classe parent sont redéfinies dans la sous-classe. L’essentiel est de fournir différentes implémentations pour la même méthode.
Examinons d'abord des exemples de surcharge :
public class OverloadParent{ public String getPerson(String name){ return “personA” + name; } public String getPerson(int age){ return “personB” ; } public String getPerson(String name,int age){ return “personC”; } public void getPerson(String name){ System.out.println(“我是重载的方法吗?”); } }
public class OverloadChildextends OverloadParent { public void getPerson(double money){ Sytem.out.println(“我是重载的方法吗”); } }
Remarque :
(1) Il existe 4 méthodes portant le même nom dans OverloadParent
(2) Les trois premières méthodes ont des types et des nombres de paramètres incohérents, mais les valeurs de retour sont les mêmes, constituant une surcharge
(3) La méthode 4 et la méthode 1 n'ont que des valeurs de retour différentes, et ne ne constitue pas une surcharge, le compilateur ne passe pas.
ps : La valeur de retour est le résultat de l'exécution de la méthode. Lorsque nous appellerons la méthode, nous ne préciserons pas "Je veux appeler une méthode avec une valeur de retour de type xxx". Elle ne peut pas devenir une fonctionnalité de ". surcharge de méthode.
(4) OverloadParent hérite de Demo et possède toutes les méthodes de Demo. Il estimait que la méthode existante ne pouvait pas répondre aux besoins et qu'elle les surchargeait simplement.
Flag of surcharge : Le nom de la méthode est le même, mais les paramètres (numéro ou type) sont différents, quelle que soit la valeur de retour.
Regardons un exemple de remplacement :
public class OverrideParent{ public void fly(){ System.out.println(“Ican fly!”); } }
public class OverrideChild extends OverrideParent{ @override public void fly(){ System.out.println(“Ican't fly, but I can run!”); }
public static vid main(String[] args){ OverwriteParent child= new OverwriteChild(); child.fly(); } }
Qu'est-ce qui sera affiché lorsque la méthode principale de OverrideChild sera exécutée ?
La réponse est : je ne peux pas voler, mais je peux courir !
Nous voyons :
(1) OverrideChild et OverrideParent ont tous deux une méthode fly
(2) La valeur de retour et le modificateur de fly sont les mêmes, seul le corps de la méthode est différent
(3) Il y a une annotation @overwrite avant la méthode fly de la sous-classe, qui apparaît dans jdk1. 5, à utiliser uniquement Pour l'héritage de classe, 1.6 peut être utilisé pour l'implémentation de l'interface. Cette annotation aide la vérification du compilateur et peut être omise.
Les signes de couverture : La classe des beaux-enfants a une mise en œuvre différente de la même méthode. Scénarios d'application Surcharge : lorsque les méthodes ont des fonctions similaires mais doivent transmettre des paramètres différents. Remplacement : lorsqu'une sous-classe a son propre comportement unique et hérite de la classe parent mais ne peut pas répondre à ses propres besoins. ps : La surcharge et l'écrasement sont tous deux des manifestations du polymorphisme. Le premier est le polymorphisme du compilateur et le second est le polymorphisme d’exécution. Merci d'avoir lu, j'espère que cela pourra vous aider, merci pour votre soutien à ce site ! Pour des explications plus détaillées et des exemples de surcharge et de remplacement de Java, veuillez faire attention au site Web PHP chinois !