Als objektorientierte Programmiersprache unterstützt Java Funktionen wie Vererbung, Polymorphismus, Upcasting usw. Daher befassen sich OOPs in Java mit Objekten, Klassen und Funktionen. Eine virtuelle Funktion ist eine der Mitgliedsfunktionen, die den Laufzeitpolymorphismus in Java erleichtert. In diesem Artikel besprechen wir die virtuelle Funktion in Java.
Definition: Eine virtuelle Funktion ist keine spezielle Funktion, sondern eine Mitgliedsfunktion, die den Methodenüberschreibungsmechanismus erleichtert. Das bedeutet, dass in OOPs eine virtuelle Funktion der übergeordneten Klasse eine Funktion ist, die von einer untergeordneten Klasse mit demselben Typ, aber unterschiedlicher Funktionalität überschrieben werden kann.
WERBUNG Beliebter Kurs in dieser Kategorie JAVA MASTERY - Spezialisierung | 78 Kursreihe | 15 ProbetestsStarten Sie Ihren kostenlosen Softwareentwicklungskurs
Webentwicklung, Programmiersprachen, Softwaretests und andere
Syntax: Für virtuelle Funktionen in Java sollten Sie der grundlegenden Java-Syntax mit Anmerkungen folgen. Um den Überschreibungsmechanismus für die virtuelle Funktion zu implementieren, kann hier die Annotation @Override verwendet werden, um speziell darauf hinzuweisen, welche virtuelle Funktion wir überschreiben möchten, obwohl dies nicht obligatorisch ist.
Lassen Sie uns nun sehen, wie die virtuelle Funktion funktioniert. Wenn wir eine überschriebene Methode einer untergeordneten Klasse über ihre übergeordnete Typreferenz aufrufen, gibt der Typ oder die Referenz des Objekts an, welche Methode aufgerufen wird. Der Abschluss dieser Entscheidung erfolgt zur Laufzeit nach der Kompilierung. Die Funktionalität der virtuellen Funktion wird also von der geerbten untergeordneten Klasse desselben Typs überschrieben.
Einige Punkte zur virtuellen Funktion:
Wir werden hier einige Codebeispiele für virtuelle Funktionen besprechen.
In diesem Beispiel zeigen wir, wie die virtuelle Funktion showMe() unterschiedlichen Text anzeigt, je nachdem, mit welcher Objektreferenz sie verknüpft ist. Wenn es mit dem Typ „Head“ verknüpft ist, werden Nachrichten der übergeordneten Klasse angezeigt. Wenn es mit dem Typ „Untergeordnet“ verknüpft ist, werden Nachrichten der untergeordneten Klasse angezeigt.
Code:
class Head { public void showMe() { System.out.println("I am Head"); } } class Subordinate extends Head { @Override public void showMe() { System.out.println("I am Subordinate "); } } public class VirtualFuntionDemo { public static void main(String args[]) { Head superObject = new Head(); superObject.showMe(); //method of super class or parent class is called Head subObject = new Subordinate(); // upcasting subObject.showMe();//method of sub class or child class is called by Parent reference, this is called "Virtual function" Subordinate subObject2 = new Subordinate(); subObject2.showMe(); //method of sub class or child class is called } }
Ausgabe:
Nehmen wir ein Beispiel für die virtuelle Funktion bei mehrstufiger Vererbung. In diesem Beispiel werden zwei Vererbungsebenen berücksichtigt. In diesem Beispiel zeigen wir, wie die virtuelle Funktion „administration()“ unterschiedliche Meldungen anzeigt, je nachdem, mit welchem Objekttyp sie verknüpft ist. Wenn es mit dem Typ „State“ verknüpft ist, zeigt es Nachrichten von der übergeordneten Klasse an. Wenn es mit dem Typ „Bezirk“ verknüpft ist, zeigt es Nachrichten seiner untergeordneten Klasse an. Auch in der zweiten Vererbungsebene werden bei Zuordnung zum Typ „Gemeinde“ Nachrichten von der untergeordneten Klasse der übergeordneten Klasse „Bezirk“ angezeigt.
Code:
class State{ void administartion() { System.out.println("This is under state govt."); } } class District extends State{ void administartion(){ System.out.println("This is under District Magistrate"); } } class Municipality extends District{ void administartion(){ System.out.println("This is under Mayor "); } } public class VirtualFunctionDemo2 { public static void main(String args[]){ State superObject=new State (); State subObject=new District (); State sub2Object=new Municipality (); superObject. administartion (); subObject.administartion (); // run time polymorphism occurs in virtual function happening in first level of heritance sub2Object.administartion (); // run time polymorphism occurs in virtual function happening in 2nd level of heritance } }
Ausgabe:
Nehmen wir ein weiteres Beispiel für Laufzeitpolymorphismus im Fall der mehrstufigen Vererbung. In diesem Beispiel werden drei Vererbungsebenen berücksichtigt. In diesem Beispiel zeigen wir, wie die virtuelle Funktion whoami() unterschiedliche Funktionen anzeigt, je nachdem, mit welchem Objekttyp sie verknüpft ist. Wenn es mit dem Typ „Autos“ verknüpft ist, werden Nachrichten der übergeordneten Klasse angezeigt. Wenn es mit dem Typ „SUV“ verknüpft ist, zeigt es Nachrichten seiner untergeordneten Klasse an. Auch in der zweiten Vererbungsebene zeigt es bei Zuordnung zum Typ „MPV“ Nachrichten von seiner untergeordneten Klasse seiner übergeordneten Klasse, der „SUV“-Klasse. Auch in der dritten Vererbungsebene zeigt es bei Zuordnung zum Typ „Fließheck“ Nachrichten von seiner untergeordneten Klasse seiner übergeordneten Klasse, der „MPV“-Klasse.
Code:
class Cars{ void whoami() { System.out.println("This is Car"); } } class SUV extends Cars{ void whoami(){ System.out.println("This is SUV"); } } class MPV extends SUV{ void whoami(){ System.out.println("This is MPV"); } } class Hatchback extends MPV{ void whoami(){ System.out.println("This is hatchback"); } } public class VirtualFunctionDemo3 { public static void main(String args[]){ Cars superObject=new Cars(); Cars subObject=new SUV(); // object of child type : 1st level heritance Cars sub2Object=new MPV(); // object of child type : 2nd level heritance Cars sub3Object=new Hatchback(); // object of child type : 3rd level heritance superObject.whoami(); subObject.whoami(); //run time polymorphism occurs in virtual function happening in first level of heritance sub2Object.whoami(); //run time polymorphism occurs in virtual function happening in second level of heritance sub3Object.whoami(); //run time polymorphism occurs in virtual function happening in third level of heritance } }
Ausgabe:
Damit ist unser Lernprozess zum Thema „Virtuelle Funktion in Java“ abgeschlossen. Schreiben Sie sich die in den obigen Beispielen genannten Codes in den Java-Compiler und überprüfen Sie die Ausgabe. Das Erlernen von Codes wird unvollständig sein, wenn Sie nicht selbst Code schreiben.
Das obige ist der detaillierte Inhalt vonVirtuelle Funktion in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!