Le mécanisme de liaison dynamique permet aux références aux classes de base de pointer vers les objets de sous-classe corrects, permettant ainsi la programmation de base axée sur la classe.
Cependant, la liaison dynamique échouera dans les deux situations suivantes.
1. La méthode de la classe de base est privée ou finale modifiée
Ceci est facile à comprendre, car privé signifie que la méthode est invisible pour la sous-classe. Écrivez une méthode avec le même nom dans la sous-classe n'est pas de remplacer la méthode de la classe parent, mais de régénérer une nouvelle méthode, il n'y a donc pas de problème de polymorphisme. La même chose peut également être expliquée par Final, car la méthode est également insurpassable.
2. La méthode est modifiée statiquement
Le code est le suivant.
Classe Base {public static void staticMethod () {System.out.println ("Base staticMehtod"); } public void dynamicmehtod () {System.out.println ("base dynamicmehtod"); }} class Sub étend la base {public static void statitMethod () {System.out.println ("sub staticmehtod"); } public void dynamicmehtod () {System.out.println ("sub dynamicmehtod"); }} classe publique TJ4 {public static void main (String args []) {base c = new sub (); C.StaticMethod (); C.DYNAMICMEHTOD (); }} / * Sortie: base staticmehtod sub dynamicmehtod * /Le résultat de sortie ne sort pas "sub-staticmehtod" comme prévu. Parce que les méthodes statiques sont associées à une classe plutôt qu'à un objet, C.StaticMethod (); est équivalent à car.staticMethod (); Essayez donc de ne pas utiliser les variables d'instance pour appeler des méthodes statiques pour éviter la confusion.
L'explication détaillée ci-dessus de la méthode statique Java n'est pas polymorphe. C'est tout le contenu que je partage avec vous. J'espère que vous pourrez vous faire référence et j'espère que vous pourrez soutenir Wulin.com plus.