Sind alle Methoden in Java implizit virtuell

Sachinbhatt

Mitglied
Wenn es in Java keine Bindung zur Kompilierzeit gibt, bedeutet das, dass die gesamte Bindung zur Laufzeit erfolgt?

Aber gemäß dem OOPs-Konzept der Laufzeitbindung müssen Funktionen virtuelle Schlüsselwörter haben. SIND alle Methoden in Java implizit virtuell oder gibt es eine Bindung zur Kompilierzeit in Java

Wenn es eine obligatorische Kompilierzeit gibt, können Sie mir jederzeit bestimmte Umstände oder Links zu zusätzlichen Daten mitteilen
  1. Static (Binding hat hier keine Bedeutung, da Static zu keinem Objekt gehört)
  2. final (dies ist kein gültiger Punkt, da er auf andere Weise erreicht werden kann)
Davor habe ich einige Nachforschungen über die Bindung zur Kompilierzeit in Java angestellt und einige Artikel über OOPs-Konzepte in Java gelesen, um das Konzept, meine Wissensquelle, besser zu verstehen: Wiki , scaler and GFG .
 
Zuletzt bearbeitet:
Dynamic Dispatch ist der Default für alle nicht-statischen und nicht-privaten Methoden, ja.
Natürlich kann die JVM zur Laufzeit noch optimieren, ob ein vtable-Lookup bei jedem Methodenaufruf gemacht werden soll, oder, ob anhand der aktuell geladenen Menge an Klassen definitiv feststeht, zu welcher Methodenimplementierung ein virtueller Methodenaufruf aufgelöst wird ("devirtualization"). Alternativ kann eine Implementierung natürlich auch noch "Inline Caching" verwenden mit Typprüfungen des Laufzeitobjektes.
Das sind aber Implementierungsdetails.

By the way: Das hier ist ein Deutsches Forum.
 

Zurück
Oben