내가 외부 클래스와이 프로그램을 컴파일에
class Outer {
static int x = 20;
static class Nested {
static void show() {
System.out.println(x);
}
}
}
같은 정적 중첩 클래스가, 나는라는 두 개의 class 파일을 가지고있다.
내 질문은, 다른 클래스 Test1 (연결을 사용하여)에서 외부 $ Nested.class 사용하려고합니다.
class Test1 {
public static void main(String... args) {
Outer$Nested i = new Outer$Nested();
}
}
내게 컴파일 시간 오류가 있습니다. 심볼 Outer $ Nested를 찾을 수 없습니다. 그리고 우리는 정적 중첩 클래스를 Outer.Nested로 직접 사용할 수 있다는 것을 알고 있지만, 나는 이것을 시도하고있다. 그러나이 클래스를 상속을 통해 사용하려고하면 컴파일되고 정상적으로 실행됩니다.
class Temp2 extends Outer$Inner {
public static void main(String... args) {
show();
}
}
이제 컴파일하고 좋은 출력을 실행 : 20
그래서 제 질문은 우리가 우리가 변수를 선언 할 수 없습니다 협회 및 이벤트를 통해 외부 $ 중첩을 사용할 수없는 것을 일어나는 이유는, 상속을 통해 사용할 수 있습니까?
의 라인을 만들려하지 않았다 "나는 = 새 외부를 Outer.Nested. 중첩 된(); " –
중첩 된 클래스를 인스턴스화하는 방법은 알고 있지만 질문하는 방식을 묻는 중입니다. –
Eclipse에서 컴파일하는 대신'javac' 명령 줄을 사용하면 두 번째 경우를 컴파일 할 수 있습니다. 첫 번째 경우에,'new Outer $ Nested(). show();'로 변경하면 컴파일되고 실행될 수도 있습니다. 이상 하네. 그러나 일반적으로 코딩에서는이 이름을 사용하지 않습니다. – Alex