Java의 익명 클래스가 그의 수퍼 클래스가 아닌 다른 메소드를 가질 수 있습니까? [복제]
Dec 27 2020
익명 클래스가 재정의 등에 좋다는 것을 알고 있지만 아래 예제와 같이 부모 클래스에 존재하지 않는 다른 메서드도 추가 할 수 있는지 궁금합니다.
이것은 유일한 방법으로 wieBenIk를 사용하는 내 수업입니다.
public class Driehoek {
//methoden
public void wieBenIk(){
System.out.println("ik ben een driehoek");
}
}
여기에 newMethod를 추가 한 익명의 클래스가 있습니다.
공용 클래스 Main {
public static void main(String[] args) {
Driehoek test = new Driehoek(){
@Override
public void wieBenIk() {
System.out.println("overrided by anonymous class");
}
public void newMethod(){
System.out.println("I am a new method");
}
};
test.newMethod();
}
}
내 질문은 왜 test.newMethod ()가 작동하지 않습니까? 다른 클래스와 같은 자식 클래스 아닌가요? 도와 주셔서 감사합니다.
답변
SJuan76 Dec 27 2020 at 05:44
test 는 Driehoek 의 인스턴스로 선언됩니다 . 따라서 컴파일러의 경우 Driehoek 멤버가 있습니다 .
마찬가지로 정의하면
Object test = new Driehoek() {....};
컴파일러 테스트의 경우 Object 멤버 만 사용할 수 있습니다 .
익명 클래스에 멤버를 더 추가하면 컴파일러는 테스트 에 해당 메서드를 사용할 수 있는지 알지 못합니다 . 그래서 그것은 당신이 그들을 사용할 수 없습니다