Heim  >  Artikel  >  Java  >  Virtuelle Funktion in Java

Virtuelle Funktion in Java

王林
王林Original
2024-08-30 15:35:01455Durchsuche

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 Probetests

Starten 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.

Wie funktionieren virtuelle Funktionen in Java?

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:

  • Funktionen der untergeordneten und übergeordneten Klasse müssen denselben Namen und dieselben Parameter haben.
  • IS-A-Beziehung ist obligatorisch (Vererbung).
  • Eine virtuelle Funktion kann nicht privat sein, da wir die privaten Methoden der übergeordneten Klasse nicht überschreiben können.
  • Eine virtuelle Funktion kann nicht als Final angegeben werden, da wir Final-Methoden nicht überschreiben können.
  • Eine virtuelle Funktion kann nicht als statisch angegeben werden, da wir statische Methoden nicht überschreiben können.

Beispiele für virtuelle Funktionen in Java

Wir werden hier einige Codebeispiele für virtuelle Funktionen besprechen.

Beispiel #1

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:

Virtuelle Funktion in Java

Beispiel #2

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:

Virtuelle Funktion in Java

Beispiel #3

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:

Virtuelle Funktion in Java

Fazit

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn