Alle Antworten hier sind größtenteils korrekt, aber es gibt einen wichtigen Punkt bezüglich der späten Bindung in Java.
Java führt keine "nach dem Buch" späte Bindung durch, wenn wir nach der Definition der späten Bindung gehen. Late Binding in seiner Buchdefinitionsform bedeutet, dass der Compiler bei einem Methodenaufruf keine Argumentprüfungen, keine Typprüfungen durchführen und alles der Laufzeit überlassen sollte - weil der Compiler möglicherweise keinen Zugriff auf den Methodenimplementierungscode hat (z. B. in der COM-Programmierung). Java überprüft jedoch zur Kompilierzeit selbst in einem polymorphen Szenario, dass die aufgerufene Methode und die Methodensignatur irgendwo in der Typhierarchie des Ausdrucks existiert, der die Methode qualifiziert. So zum Beispiel, sagen wir mal ich eine Methode foo1 auf ref aufrufen, die nicht in entweder nicht existiert A oder B:
A ref=null;
ref=new B();
ref.foo1();
//This will not compile in Java, because java will check at compile time
//for the method foo1 in the type hierarchy of A, which is the type of the
// variable ref at compile time.
//In pure late binding, however this would pass compilation and
//throw an error at runtime.
In einem reinen späte Bindung Szenario wird die Bestimmung, ob die Methode foo1() existiert oder nicht mit der richtigen Anzahl von Argumenten wird gemacht rein zur Laufzeit. In Java gibt es jedoch eine bestimmte Stufe der Überprüfung zur Kompilierzeit, um sicherzustellen, dass die Methode mit der richtigen Anzahl von Argumenten irgendwo in der Typhierarchie existiert.
Die einzige Zeit, die ich denke, Java führt pure späte Bindung ist, wenn man Reflexion verwendet, um eine Methode aufzurufen. Was Java tut, wird besser als dynamischer Dispatch und nicht als späte Bindung bezeichnet, aber jeder nennt es späte Bindung in Java und daher gibt es Verwirrung.
Verspätete Bindung tritt nicht bei 'finalen' 'statischen' oder' privaten' Methoden auf. Für jeden anderen tut es. Das ist alles. – Pshemo
Hinweis für zukünftige Leser: Die Kommentare im obigen Code sind falsch! –
Könnten Sie bitte die Kommentare dann ändern – user3163829