A reference variable can be declared as a class type or an interface type.If the variable is declared as an interface type, it can reference any object of any class that implements the interface.

Based on the above statement I have made a code on understanding. As said above declared as an interface type, it can reference any object of any class that implements the interface.

But in my code is displaying displayName() method undefined at objParent.displayName():

public class OverridenClass {
    public static void main(String[] args) {
        Printable objParent = new Parent();
        objParent.sysout();
        objParent.displayName();
    }
}

interface Printable {
    void sysout();
}

class Parent implements Printable {
    public void displayName() {
        System.out.println("This is Parent Name");
    }

    public void sysout() {
        System.out.println("I am Printable Interfacein Parent Class");
    }
}

I am sure I have understood the wrong way. Can someone explain the same?

Edit
Report