상위 클래스의 참조 변수를 하위 클래스 개체로 유지하려고 할 때 이 개체를 사용하면 상위 클래스의 멤버에만 액세스할 수 있습니다. 이 참조를 사용하여 파생 클래스의 멤버에 액세스하려고 하면 컴파일 시간이 발생합니다. 오류입니다.
예시
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(); } }
출력
InterfaceExample.java:14: error: cannot find symbol obj.display(); ^ symbol: method display() location: variable obj of type Sample 1 error
슈퍼 클래스의 참조로 파생 클래스 멤버에 액세스해야 하는 경우 참조 연산자를 사용하여 참조를 캐스팅해야 합니다.
예시
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(); } }
출력
This is demo method-1 This is a method of the sub class