class AbstractDemo { void display() { System.out.println("display() called from AbstractDemo class"); } void fun() { System.out.println("fun() called from AbstractDemo class"); } } class ConcreteDemo extends AbstractDemo { void bar() { System.out.println("fun() called from ConcreteDemo class"); } @Override void display() { System.out.println("display() called from ConcreteDemo class"); } public static void main(String[] args) { AbstractDemo abstractDemo=new AbstractDemo(); //handle: AbstractDemo, object:AbstractDemo abstractDemo.display(); abstractDemo.fun(); ConcreteDemo concreteDemo=new ConcreteDemo(); //handle: ConcreteDemo, object:ConcreteDemo concreteDemo.display(); concreteDemo.bar(); /*DYNAMIC BINDING EXAMPLE*/ /*USING HANDLE OF PARENT_CLASS TO DEAL WITH OBJECTS OF BOTH (PARENT_CLASS AND CHILD_CLASS) */ abstractDemo=new ConcreteDemo(); //handle: AbstractDemo, obje...