Der dynamische Bindungsmechanismus ermöglicht den Referenzen auf Basisklassen, auf die richtigen Subklassenobjekte zu verweisen und so die basisklassenorientierte Programmierung zu ermöglichen.
Die dynamische Bindung wird jedoch in den folgenden zwei Situationen fehlschlagen.
1. Die Basisklassenmethode ist privat oder endgültig modifiziert
Dies ist leicht zu verstehen, da privat bedeutet, dass die Methode für die Unterklasse unsichtbar ist. Schreiben Sie eine Methode mit demselben Namen in der Unterklasse darin, die übergeordnete Klassenmethode nicht zu überschreiben, sondern eine neue Methode zu regenerieren, sodass es kein Problem des Polymorphismus gibt. Gleiches kann auch durch das endgültige erklärt werden, da die Methode ebenfalls unübertroffen ist.
2. Die Methode ist statisch geändert
Der Code ist wie folgt.
Klasse Base {public static void staticMethod () {System.out.println ("Basis staticMehTod"); } public void dynamicmehtod () {System.out.println ("BasisdynamicMehTod"); }} class sub erweitert Basis {public static void staticMethod () {System.out.println ("sub staticMehTod"); } public void dynamicmehtod () {System.out.println ("sub dynamicmehTod"); }} öffentliche Klasse TJ4 {public static void main (String args []) {Basis c = new Sub (); C.StaticMethod (); C.DynamicmehTod (); }}/ * Ausgabe: Basis staticMehTod sub dynamicmehtod */Das Ausgangsergebnis gibt nicht wie erwartet "SubstaticMehTod" aus. Weil statische Methoden eher mit einer Klasse als einem Objekt verbunden sind, c.StaticMethod (); entspricht dem Auto. StaticMethod (); Versuchen Sie also, Instanzvariablen nicht zu verwenden, um statische Methoden aufzurufen, um Verwirrung zu vermeiden.
Die obige detaillierte Erklärung der statischen Java -Methode ist nicht polymorph. Dies ist der gesamte Inhalt, den ich mit Ihnen teile. Ich hoffe, Sie können Ihnen eine Referenz geben und ich hoffe, Sie können wulin.com mehr unterstützen.