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:
Tout d'abord, parlons de: surcharge
(1) La surcharge de méthode est un moyen de permettre aux classes de traiter différents types de données de manière unifiée. Plusieurs fonctions avec le même nom existent en même temps, avec différents paramètres / types. La surcharge est une manifestation du polymorphisme dans une classe.
(2) La surcharge de méthode Java signifie que plusieurs méthodes peuvent être créées dans une classe, elles ont le même nom, mais ont des paramètres différents et des définitions différentes. Lorsque nous appelons des méthodes, nous décidons quelle méthode utiliser par le nombre de paramètres et types de paramètres différents qui leur sont transmis. C'est le polymorphisme.
(3) Lorsque la surcharge, le nom de la méthode doit être le même, mais le type et le nombre de paramètres sont différents, et le type de valeur de retour peut être identique ou différent. Le type de retour ne peut pas être utilisé comme critère de distinction pour les fonctions de surcharge.
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 OverloadParent {public void getPerson (Double Money) {System.out.println ("est-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.
Alors parlons de remplacer (remplacer)
(1) Le polymorphisme entre la classe parent et la classe d'enfants redéfinit les fonctions de la classe parent. Si une méthode définie dans une sous-classe a le même nom et les mêmes paramètres que sa classe parent, nous disons que la méthode est remplacée. En Java, les sous-classes peuvent hériter des méthodes de la classe parent sans réécrire la même méthode.
Mais parfois, la sous-classe ne veut pas hériter des méthodes de la classe parent intacte, mais veut plutôt apporter certaines modifications, ce qui nécessite une réécriture de la méthode.
La réécriture de la méthode est également appelée l'écrasement de la méthode.
(2) Si la méthode dans la sous-classe a le même nom de méthode, type de retour et table de paramètre comme méthode dans la classe parent, la nouvelle méthode remplacera la méthode d'origine.
Si vous avez besoin de la méthode d'origine dans la classe parent, vous pouvez utiliser le mot-clé Super, qui fait référence à la classe parent de la classe actuelle.
(3) les autorisations de modification d'accès des fonctions de sous-classe ne peuvent pas être inférieures à celles de la classe parent;
Jetons un coup d'œil à un exemple d'écrasement:
classe publique OverRideparent {public void fly () {System.out.println ("Ican Fly!"); }} 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) {sunwriteParent 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.
Règles pour les méthodes de réécriture:
1. La liste des paramètres doit être exactement la même que la méthode réécrite, sinon elle ne peut pas être appelée réécriture mais surchargée.
2. Le type retourné doit toujours être le même que le type de retour de la méthode écrasée, sinon il ne peut pas être appelé réécriture mais surchargé.
3. La limite du modificateur d'accès doit être supérieure au modificateur d'accès de la méthode réécrite (public> protégé> par défaut> privé)
4. La méthode de réécriture ne doit pas lancer de nouvelles exceptions de chèque ou des exceptions vérifiées plus largement que la déclaration de la méthode de réécriture. Par exemple:
Une méthode de la classe Parent déclare une exception de vérification IOException. Lors de la réécriture de cette méthode, vous ne pouvez pas lancer une exception, vous ne pouvez lancer qu'une exception de sous-classe d'iOException, et vous pouvez lancer des exceptions non cocher.
Et les règles de surcharge:
1. Doit avoir différentes listes de paramètres;
2. Il peut y avoir un type de retour qui ne vous gronde pas, tant que la liste des paramètres est différente;
3. Il peut y avoir différents modificateurs d'accès;
4. Différentes exceptions peuvent être lancées;
La différence entre la réécriture et la surcharge est:
La réécriture du polymorphisme fonctionne, appeler des méthodes surchargées peut réduire considérablement la quantité d'entrée de code. Tant que le même nom de méthode y passe différents paramètres, il peut avoir des fonctions ou des valeurs de retour différentes.
Si vous utilisez bien la réécriture et la surcharge, vous pouvez concevoir une classe avec une structure claire et concise. On peut dire que le rôle de la réécriture et de la surcharge dans le processus d'écriture du code est extraordinaire.
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.