Being an object-oriented programming language, java supports features like inheritance, polymorphism, upcasting, etc. Therefore, OOPs in Java deals with objects, classes, and functions. A virtual function is one of the member function that facilitates run time polymorphism in Java. In this article, we will discuss the virtual function in Java.
Definition: A virtual function is not any special function, but it is a member function that facilitates the method overriding mechanism. That means, in OOPs, a virtual function of the parent class is a function that can be overridden by a child class that has the same type but with different functionality.
ADVERTISEMENT Popular Course in this category JAVA MASTERY - Specialization | 78 Course Series | 15 Mock TestsStart Your Free Software Development Course
Web development, programming languages, Software testing & others
Syntax: For Virtual Function in Java, you should follow the basic syntax of java with annotations. To implement the overriding mechanism for the virtual function, @Override annotation may be used here to specifically point out which virtual function we want to override, although it is not mandatory.
Now let us see how virtual function works. When we call an overridden method of child class through its parent type reference, then the type or reference of the object indicates which method will be invoked. The conclusion of this decision occurs during runtime after the compilation. So, the virtual function’s functionality is overridden by the inherited child class of the same type.
Some Points Regarding Virtual Function:
We will discuss some code examples of Virtual Function here.
In this example, we will show how the virtual function showMe() is displaying different text depending on to which reference of object it is associated with. When it is associated with the “Head” type, it is showing messages from the parent class. When it is associated with the “Subordinate” type, it shows messages from the child class.
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 } }
Output:
Let us take an example of the virtual function in the case of multilevel inheritance. In this example, we have two levels of inheritance is taken into account. In this example, we will show how the virtual function administration() is displaying different messages depending on which type of object it is associated with. When it is associated with the “State” type, it is showing messages from the parent class. When it is associated with the “District” type, it shows messages from its child class. Again in the second level of inheritance, when associated with the “Municipality” type, it shows messages from its child class of its parent, the “District” class.
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 } }
Output:
Let us take another example of run time polymorphism in the case of multilevel inheritance. In this example, we have three levels of inheritance is taken into account. In this example, we will show how the virtual function whoami() is displaying different features depending on which type of object it is associated with. When it is associated with the “Cars” type, it is showing messages from the parent class. When it is associated with the “SUV” type, it shows messages from its child class. Again in the second level of inheritance, when associated with the “MPV” type, it shows messages from its child class of its parent, the “SUV” class. Again in the third level of inheritance, when associated with the “Hatchback” type, it shows messages from its child class of its parent, the “MPV” class.
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 } }
Output:
This concludes our learning of the topic “Virtual Function in Java”. Write yourself the codes mentioned in the above examples in the java compiler and verify the output. Learning of codes will be incomplete if you will not write code by yourself.
The above is the detailed content of Virtual Function in Java. For more information, please follow other related articles on the PHP Chinese website!