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(); // Head subObject = new Subordinate(); // upcasting subObject.showMe();//this is called "Virtual function" Subordinate subObject2 = new Subordinate();subObject2.showMe(); // }}