java - La surcharge est-elle polymorphe? ?
给我你的怀抱
给我你的怀抱 2017-06-12 09:20:06
0
3
1012

Ce problème est vraiment un casse-tête, peu importe comment vous le dites

Vue 1 : Les trois éléments du polymorphisme, 1, 2, 3
Donc la surcharge n'est pas un polymorphisme

Vue 2 :

Mentionné dans le livre Java Virtual Machine

Certaines des manifestations les plus fondamentales des caractéristiques du polymorphisme, telles que la « surcharge » et la « réécriture » Section 8.1
Cela signifie que la surcharge et la réécriture sont toutes deux des manifestations du polymorphisme

Comment comprenez-vous

给我你的怀抱
给我你的怀抱

répondre à tous(3)
仅有的幸福

Chaque livre est traduit différemment, il est préférable de préciser le terme anglais, qu'il s'agisse de Override ou de Overload.

Override est une manifestation de polymorphisme (par exemple @Override public String toString() {...}), mais @Override public String toString() {...}),但Overload不是(例如PrintStream.println()PrintStream.println(String s)Overload

ne l'est pas (par exemple PrintStream.println() code > et PrintStream.println(String s)). 🎜
给我你的怀抱

En fait, il existe trois équivalents anglais du « surcharge » chinois : override, surcharge et overwrite. Plus tard, le dernier a été progressivement traduit par « réécrire » ou « réécrire ».

Override fait référence à la pratique consistant à redéfinir les fonctions de la classe parent avec la même signature. Dans ce cas, la fonction de classe parent et la fonction de classe enfant sont des entités indépendantes. Mais lors de l'appel, le compilateur (ou l'interprète) peut déterminer quelle implémentation appeler en fonction du type réel de l'objet.

overload fait référence à plusieurs implémentations du même nom de fonction qui ne peuvent pas être signées. Dans ce cas, le même nom de fonction peut souvent être appelé avec différents types de paramètres pour produire des résultats différents. Un exemple typique est max(int, int)max(double, double) etc.

overwrite est généralement la réécriture d'une fonction avec la même signature de la classe parent par une sous-classe. Les signatures des deux fonctions sont les mêmes, mais elles n'ont rien à voir l'une avec l'autre. Dans ce cas, le type de classe parent fait référence à l'objet de sous-classe et la méthode appelante est la méthode de classe parent appelée (notez la différence avec le remplacement)

À propos de la différence entre écraser et remplacer, comme indiqué ci-dessous

Parlons maintenant du polymorphisme. Regardons d'abord la définition du polymorphisme :

  • Le polymorphisme fait référence à une même entité ayant plusieurs formes en même temps. (Bing Musique)

  • Polymorphisme signifie littéralement « états multiples ». Dans les langages orientés objet, plusieurs implémentations différentes d’une interface sont appelées polymorphisme. (Encyclopédie Baidu)

D'après la définition, la « surcharge » n'a rien à voir avec le polymorphisme, mais la surcharge est une forme de polymorphisme. D'autres incluent les interfaces, les abstractions, les fonctions virtuelles, les modèles, les génériques..., et puis de Baidu Quelques citations de l'encyclopédie :

  • Pour faire simple, il s'agit d'une phrase : il est permis d'attribuer un pointeur d'un type de sous-classe à un pointeur d'un type de classe parent. Le polymorphisme est implémenté via des fonctions virtuelles en Pascal Objet et en C++.

  • Polymorphisme : La même opération agit sur différents objets et peut avoir différentes interprétations et produire des résultats d'exécution différents. Au moment de l'exécution, vous pouvez appeler des méthodes dans une classe dérivée via un pointeur vers la classe de base.

  • En C++, il existe les méthodes suivantes pour réaliser le polymorphisme : fonctions virtuelles, classes abstraites, remplacements et modèles (la surcharge n'a rien à voir avec le polymorphisme).

  • Le polymorphisme permet aux méthodes d'avoir le même nom. Les paramètres ou les valeurs de retour peuvent être transmis ou renvoyés par le type parent.

学霸

Il peut y avoir des erreurs de traduction. Le polymorphisme signifie que les objets présentent des caractéristiques différentes dans différents contextes. Par exemple, une sous-classe Child hérite de la classe parent parent et une nouvelle méthode est ajoutée à la classe Child, save. . Utilisez également directement Child child1=new Child(), l'objet child1 peut appeler les méthodes de sauvegarde et de connexion, utilisez Parent child2 = new Child(), l'objet child2 ne peut utiliser que la méthode de connexion. Cela dépend donc du contexte.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!