Maison  >  Article  >  Java  >  Comment implémenter le polymorphisme en Java

Comment implémenter le polymorphisme en Java

尚
original
2019-12-04 11:48:053645parcourir

Comment implémenter le polymorphisme en Java

Aperçu du polymorphisme Java : (Recommandé : tutoriel vidéo Java)

Le polymorphisme est une fonctionnalité importante des langages de programmation orientés objet, qui permet basic Le pointeur ou la référence de la classe pointe vers l'objet de la classe dérivée, et la liaison dynamique de la méthode est implémentée lors d'un accès spécifique. L'implémentation par Java de la liaison dynamique des appels de méthode repose principalement sur la table des méthodes, mais l'implémentation via les appels de référence de classe (invokevitual) et les appels de référence d'interface (invokeinterface) est différente.

Trois conditions sont requises pour implémenter le polymorphisme en Java :

1 Il doit y avoir une relation d'héritage.

2. Il faut le réécrire dans une méthode.

3. Il doit y avoir une référence de la classe parent pointant vers l'objet de la sous-classe.

Le processus général d'appel de référence de classe est le suivant : le compilateur Java compile le code source Java dans un fichier de classe. Pendant le processus de compilation, la référence de symbole appelée est écrite dans le fichier de classe en fonction du type statique.

Pendant l'exécution, la JVM trouve la référence symbolique de la méthode appelante en fonction du fichier de classe, puis trouve le décalage dans la table des méthodes de type statique, puis détermine le type réel de l'objet en fonction de ce pointeur, en utilisant la table de méthodes du type réel, le décalage est le même que le décalage de la table des méthodes dans le type statique. Si la méthode se trouve dans la table des méthodes du type réel, elle est appelée directement. La méthode de la classe parent n’a pas été remplacée. Recherche de bas en haut selon le lien d'héritage.

Comment implémenter le polymorphisme en Java

Comme le montre la figure ci-dessus, lorsque le programme est en cours d'exécution et qu'une certaine classe est requise, le sous-système de chargement de classe chargera le fichier de classe correspondant dans la JVM. Et établissez en interne les informations de type de la classe (ces informations de type sont en fait une structure de données stockée dans la JVM par le fichier de classe), y compris toutes les informations définies par la classe Java, y compris le code de méthode, les variables de classe, les variables membres et les contenu de cet article de blog. Tableau des méthodes axées sur la discussion. Ces informations de type sont stockées dans la zone méthode.

Notez que les informations de type dans cette zone de méthode sont différentes de l'objet de classe stocké dans le tas. Dans la zone méthode, les informations de type de cette classe n'ont qu'une instance unique (c'est donc une zone mémoire partagée par chaque thread), et il peut y avoir plusieurs objets de cette classe dans le tas. Les informations de type dans la zone de méthode sont accessibles via l'objet de classe dans le tas. Tout comme le mécanisme de réflexion Java, toutes les informations de la classe sont accessibles via l'objet classe.

Pour plus de connaissances sur Java, veuillez faire attention à la colonne Tutoriel de base 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