Maison > Java > javaDidacticiel > Explication détaillée et exemples de surcharge et de remplacement Java

Explication détaillée et exemples de surcharge et de remplacement Java

高洛峰
Libérer: 2017-01-21 16:56:22
original
1959 Les gens l'ont consulté

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.

java 重载(overload)与重写(override)详解及实例

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(“我是重载的方法吗?”);
 
  }
 
}
Copier après la connexion
public class OverloadChildextends OverloadParent {
 
  public void getPerson(double money){
 
     Sytem.out.println(“我是重载的方法吗”);
 
  }
 
}
Copier après la connexion

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!”);
 
  }
 
}
Copier après la connexion
public class OverrideChild extends OverrideParent{
 
  @override
 
  public void fly(){
 
       System.out.println(“Ican't fly, but I can run!”);
 
  }
Copier après la connexion
public static vid main(String[] args){
 
       OverwriteParent child= new OverwriteChild();
 
       child.fly();
 
  }
 
}
Copier après la connexion

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 !

É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