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

testDriehoek 의 인스턴스로 선언됩니다 . 따라서 컴파일러의 경우 Driehoek 멤버가 있습니다 .

마찬가지로 정의하면

Object test = new Driehoek() {....};

컴파일러 테스트의 경우 Object 멤버 만 사용할 수 있습니다 .

익명 클래스에 멤버를 더 추가하면 컴파일러는 테스트 에 해당 메서드를 사용할 수 있는지 알지 못합니다 . 그래서 그것은 당신이 그들을 사용할 수 없습니다