De nombreux étudiants sont stupides et ne peuvent pas faire la différence entre la surcharge et la priorité. Il est recommandé de ne pas mémoriser les connaissances conceptuelles par la parole, mais de la comprendre et de la mémoriser.
Permettez-moi d'abord de donner ma définition:
Surcharge: dans la même classe ou dans la relation d'héritage, un groupe de méthode avec le même nom et différents paramètres. Essentiellement, c'est le nom de différentes méthodes.
Remplacer: entre deux classes qui ont des relations d'héritage, les méthodes qui existent dans la classe parent sont redéfinies dans la sous-classe. L'essence est de donner différentes implémentations pour la même méthode.
Regardons d'abord l'exemple de la surcharge:
classe publique OverloadParent {public String getPerson (nom de chaîne) {return "persona" + name; } public String getPerson (int Age) {return "personB"; } public String getPerson (nom de chaîne, int age) {return "personc"; } public void getPerson (nom de chaîne) {System.out.println ("Suis-je surchargé de la méthode?"); }} classe publique OverloadChildExtend OutloadParent {public void getSerson (double monnaie) {System.out.println ("Suis-je une méthode surchargée"); }}Faites attention à l'observation:
(1) Il y a 4 méthodes avec le même nom en surcharge
(2) Les types de paramètres et les nombres des trois premières méthodes sont incohérents, et la valeur de retour est la même, ce qui constitue une surcharge
(3) La méthode 4 et la méthode 1 seules les valeurs de retour sont différentes et ne constituent pas de surcharge, et le compilateur ne passe pas.
PS: La valeur de retour est le résultat de l'exécution de la méthode. Lorsque nous appelons la méthode, nous ne spécifierons pas "Je veux appeler une méthode avec la valeur de retour du type xxx", elle ne deviendra pas une fonctionnalité de surcharge de méthode.
(4) Le parent de surcharge hérite de la démo, et il a toutes les méthodes détenues dans la démo. Il a estimé que la méthode existante ne pouvait pas répondre aux besoins, il en avait donc simplement surchargé un.
Indicateurs surchargés: le nom de la méthode est le même, les paramètres sont différents (nombre ou type) et n'ont rien à voir avec la valeur de retour.
Jetons un coup d'œil à un exemple d'écrasement:
classe publique OverRideparent {public void fly () {System.out.println ("Ican Fly!"); }} La classe publique OverRideChild étend OverRideparent {@Override public void fly () {System.out.println ("iCan't Fly, mais je peux courir!"); } public static vid main (String [] args) {sumparentfarent child = new suwriteChild (); child.fly (); }}Quelle sera la sortie lors de l'exécution de la méthode principale de OverRideChild?
La réponse est: je ne peux pas, mais je peux courir!
Nous voyons:
(1) OverrideChild et OverRaideparent ont une méthode de mouche
(2) La valeur de retour et le modificateur de la mouche sont les mêmes, seul le corps de la méthode est différent
(3) Il y a une annotation de @overwrite avant la méthode de la sous-classe de la sous-classe. JDK1.5 apparaît et n'est utilisé que pour l'héritage des classes. 1.6 peut être utilisé pour l'implémentation d'interface. Cette annotation aide à vérifier le compilateur, et il est normal de ne pas l'ajouter.
Flags remplacés: l'enfant hérite de la classe parent et a des implémentations différentes pour la même méthode.
Scénarios d'application
Surcharge: lorsque les fonctions de la méthode sont similaires, mais que différents paramètres doivent être passés.
Remplir: lorsqu'une sous-classe a son propre comportement unique, il hérite de la classe parent et 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, tandis que le second est un polymorphisme d'exécution.
Merci d'avoir lu, j'espère que cela peut vous aider. Merci pour votre soutien à ce site!