익명 클래스가 인터페이스의 유형으로 정의 된 경우 익명 클래스가 인터페이스를 구현하지만 다른 클래스의 유형으로 정의 된 경우 (아래 그림 참조) 클래스를 확장하지 않는 것처럼 보입니다. 그것을 말했다). 익명 클래스는 중첩 클래스를 확장하는 경우Java에서 익명 클래스와 유형으로 정의 된 관계는 무엇입니까?
여기public class AnonymousClassTest {
// nested class
private class NestedClass {
String string = "Hello from nested class.";
}
// entry point
public static void main (String args[]){
AnonymousClassTest act = new AnonymousClassTest();
act.performTest();
}
// performs the test
private void performTest(){
// anonymous class to test
NestedClass anonymousClass = new NestedClass() {
String string = "Hello from anonymous class.";
};
System.out.println(anonymousClass.string);
}
}
는 다음 넣어은 "익명 클래스에서 안녕하세요."것, 출력을 실행하지만 때 "중첩 된 클래스에서 안녕하세요."를 읽고
익명의 클래스에서 두 번째 필드를 선언한다고 생각합니다. String 수정자를 제거해보십시오. 문자열 만들기 = "안녕하세요 익명의 클래스에서." 문자열 필드를 비공개로 설정합니다. – Others
그러나 이것은 사실이지만 익명 클래스의 String을 재정의하려고합니다. 상위 문자열에 접근하려면'super.string'을 사용하지 않아야합니까? – Continuity8
아 ... 이제 알겠습니다. 필드가 무시할 수 없다는 것을 알지 못했습니다. 유일한 방법입니다. 나는 String 필드를 메서드처럼 취급하고있었습니다. – Continuity8