Ist es möglich, virtuelle Methoden in Java zu schreiben , wie dies in C ++ der Fall wäre?
Oder gibt es einen geeigneten Java-Ansatz, den Sie implementieren können und der ein ähnliches Verhalten erzeugt? Könnte ich bitte einige Beispiele haben?
java
virtual
virtual-functions
Yonatan
quelle
quelle
Können Sie virtuelle Funktionen in Java schreiben?
Ja. Tatsächlich sind alle Instanzmethoden in Java standardmäßig virtuell. Nur bestimmte Methoden sind nicht virtuell:
Hier sind einige Beispiele:
"Normale" virtuelle Funktionen
Das folgende Beispiel stammt aus einer alten Version der Wikipedia-Seite, die in einer anderen Antwort erwähnt wurde.
Ausgabe:
Beispiel mit virtuellen Funktionen mit Schnittstellen
Java- Schnittstellenmethoden sind alle virtuell. Sie müssen virtuell sein, da sie sich auf die implementierenden Klassen stützen, um die Methodenimplementierungen bereitzustellen. Der auszuführende Code wird nur zur Laufzeit ausgewählt.
Beispielsweise:
Beispiel mit virtuellen Funktionen mit abstrakten Klassen.
Ähnlich wie Schnittstellen Abstrakte Klassen müssen virtuelle Methoden enthalten , da sie die Umsetzung auf der Verlängerung Klassen verlassen. Beispielsweise:
quelle
Alle Funktionen in Java sind standardmäßig virtuell.
Sie müssen sich alle Mühe geben, um nicht virtuelle Funktionen zu schreiben, indem Sie das Schlüsselwort "final" hinzufügen.
Dies ist das Gegenteil des C ++ / C # -Standards. Klassenfunktionen sind standardmäßig nicht virtuell. Sie machen sie so, indem Sie den Modifikator "virtuell" hinzufügen.
quelle
Alle nicht privaten Instanzmethoden sind in Java standardmäßig virtuell.
In C ++ können private Methoden virtuell sein. Dies kann für die NVI-Sprache (Non-Virtual-Interface) ausgenutzt werden. In Java müssen Sie die überschreibbaren NVI-Methoden schützen.
Aus der Java-Sprachspezifikation, Version 3:
quelle
Ja, Sie können virtuelle "Funktionen" in Java schreiben.
quelle
In Java sind alle öffentlichen (nicht privaten) Variablen und Funktionen standardmäßig virtuell . Darüber hinaus sind Variablen und Funktionen, die das Schlüsselwort final verwenden, nicht virtuell .
quelle