인터페이스가 java/lang/Object
으로 확장되지 않더라도 JVM 사양에 super_class
의 java/lang/Object
이 있어야한다고하는 이유는 무엇입니까?인터페이스가 클래스 파일 형식에 따라 Object를 확장하는 이유는 무엇입니까?
내가 특별히 그것을 말한다 JVM 스펙의 §4.1 말하는 겁니다 :
을 인터페이스의 경우는 super_class 항목의 값은 항상있는 constant_pool 테이블에 유효한 인덱스해야합니다. 해당 인덱스의 constant_pool 항목은 Object 클래스를 나타내는 CONSTANT_Class_info 구조 여야합니다.
아직 JLS의 §9.2에는 인터페이스가 객체를 확장하지 않는다고합니다. 인터페이스는 직접적인 슈퍼가 없습니다
경우, 인터페이스가 암시 적으로 서명 S, 반환 형식의 연구와 공공 추상적 인 멤버 메소드의 m은 선언 대신 암시 적으로 생성 된 추상 메소드는 Object 클래스의 각 공용 방법을 일치하는 선언 , 동일한 서명, 동일한 반환 유형 및 호환 가능한 throws 절을 가진 메소드가 명시 적으로 선언되지 않는 한, 서명 s, 반환 유형 r 및 객체에 선언 된 throws 절을 사용하여 각 공용 인스턴스 메소드 m에 해당하는 절 t를 throw합니다. 인터페이스.