When you try to hold the super class’s reference variable with a sub class object, using this object you can access the members of the super class only, if you try to access the members of the derived class using this reference you will get a compile time error.
Example
interface Sample { void demoMethod1(); } public class InterfaceExample implements Sample { public void display() { System.out.println("This ia a method of the sub class"); } public void demoMethod1() { System.out.println("This is demo method-1"); } public static void main(String args[]) { Sample obj = new InterfaceExample(); obj.demoMethod1(); obj.display(); } }
Output
InterfaceExample.java:14: error: cannot find symbol obj.display(); ^ symbol: method display() location: variable obj of type Sample 1 error
If you need to access the derived class members with the reference of super class, you need to cast the reference using the reference operator.
Example
interface Sample { void demoMethod1(); } public class InterfaceExample implements Sample{ public void display() { System.out.println("This is a method of the sub class"); } public void demoMethod1() { System.out.println("This is demo method-1"); } public static void main(String args[]) { Sample obj = new InterfaceExample(); obj.demoMethod1(); ((InterfaceExample) obj).display(); } }
Output
This is demo method-1 This is a method of the sub class