질문을 설명하는 코드 스 니펫을 찾으십시오. 인터페이스가 객체 계층 구조의 일부입니까?
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
I ref = new B();
ref.equals("");
}
}
interface I{
}
class A {
public void method(){
}
}
class B extends A implements I{
}
는
main()
에,
ref.equals()
이 허용 되나
ref.method()
이 허용되지 않습니다를 참조하십시오. 왜 그렇습니까?
EDIT : 개체는 B (또는 A 또는 다른 클래스)의 수퍼 클래스이지만 A와 마찬가지로 B도 수퍼 클래스입니다. 제 질문은 A의 'method()'가 'ref'에 표시됩니다. 즉, ref.equals()가 허용되지만 ref.method()가 아닌 이유는 무엇입니까? 이 메소드 가시성 검사가 어떻게 수행됩니까? JVM에 뿌리를 내리고 있습니까? 당신은 내가 and the methods from Object
에 선언 된 메소드를 볼 수
I ref = new B();
: 당신이 I로 선언 않았기 때문이다