Maison  >  Article  >  Java  >  Quel est le principe du polymorphisme en Java

Quel est le principe du polymorphisme en Java

王林
王林original
2020-01-02 10:12:204744parcourir

Quel est le principe du polymorphisme en Java

Qu'est-ce que le polymorphisme ?

Le polymorphisme fait référence à l'objet d'instance de classe vers lequel une variable de référence pointera. L'appel de méthode émis par la variable de référence est une méthode implémentée dans quelle classe. Cela doit être déterminé lors de l'exécution du programme. .

Étant donné que la classe spécifique est déterminée lors de l'exécution du programme, la variable de référence peut être liée à diverses implémentations de classe sans modifier le code du programme source, ce qui entraîne le changement de la méthode spécifique appelée par la référence. le code spécifique lié au programme lorsqu'il est en cours d'exécution peut être modifié sans modifier le code du programme, permettant au programme de sélectionner plusieurs états d'exécution. Il s'agit du polymorphisme.

(Partage gratuit de didacticiels vidéo d'apprentissage en ligne : apprentissage en ligne java )

Caractéristiques :

pointe vers la classe parent de la classe enfant Puisque la référence est transformée vers le haut, elle ne peut accéder qu'aux méthodes et propriétés appartenant à la classe parent. Pour les méthodes qui existent dans la sous-classe mais pas dans la classe parent, la référence ne peut pas être utilisée, même si la méthode est surchargée.

Si la sous-classe remplace certaines méthodes de la classe parent, lors de l'appel de ces méthodes, les méthodes définies dans la sous-classe doivent être utilisées (connexion dynamique, appel dynamique).

Il y a trois conditions nécessaires pour que Java obtienne le polymorphisme : l'héritage, la réécriture et la transformation ascendante.

La méthode prioritaire appelée, la priorité est : this.show(O), super.show(O), this.show((super)O), super.show((super )O ).

Le principe d'implémentation du polymorphisme

L'invocation de méthodes objet en Java est implémentée en s'appuyant sur la table des méthodes dans les informations de classe.

En général, lorsqu'une méthode d'un objet est appelée, la JVM recherche la table des méthodes de la classe d'objet pour déterminer l'adresse de référence directe de la méthode, et n'appelle ensuite réellement la méthode qu'après avoir obtenu l'adresse. .

La super classe hérite de la méthode de la classe parent si la méthode n'est pas Overriding, la méthode pointera vers la méthode de la classe parent lorsqu'elle sera appelée. Si vous remplacez cette méthode, elle pointe vers la zone de code de la classe, mais la super classe aura la table de méthodes de la classe parent.

Nous savons que lorsqu'un programme Java est en cours d'exécution, les informations relatives à la classe sont placées dans la zone des méthodes. Parmi ces informations se trouve une zone appelée table de méthodes. Cette table contient des informations sur toutes les méthodes définies par le type et. pointe vers ces Pointeur vers le code réel de la méthode.

Comme le montre la figure :

Quel est le principe du polymorphisme en Java

Lorsque les quatre classes Bird, Cock, Parrot et CrazyParrot sont chargées dans la zone méthode de la machine virtuelle Java, La zone de méthode contient des informations sur ces quatre classes. La figure suivante montre un exemple de table de méthodes de chaque classe.

Quel est le principe du polymorphisme en Java

Sur la figure, nous pouvons voir que les tables de méthodes d'informations de classe de Cock, Parrot et CrazyParrot contiennent des méthodes héritées de Bird. La table des méthodes de CrazyParrot contient des méthodes héritées de Parrot. De plus, chaque classe possède également ses propres méthodes.

Faites attention à la zone de code de méthode spécifique indiquée par l'entrée du tableau des méthodes. Pour la méthode polymorphe Overriding courtship(), bien que l'emplacement de l'entrée courtship() dans les tables de méthodes de Cock, Parrot et CrazyParrot appartienne à la partie héritée de la table de méthodes Bird, elle pointe vers une zone de code de méthode différente.

Partage d'articles et de tutoriels connexes : Introduction au langage Java

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
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