상위 클래스의 참조 변수를 하위 클래스 개체로 유지하려고 할 때 이 개체를 사용하면 상위 클래스의 멤버에만 액세스할 수 있습니다. 이 참조를 사용하여 파생 클래스의 멤버에 액세스하려고 하면 컴파일 시간이 발생합니다. 오류입니다.
예시
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