Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 인터페이스 객체로 파생 클래스 멤버 변수에 액세스하는 방법은 무엇입니까?

<시간/>

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

예시

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