저는 java를 처음 사용하고 있습니다. 현재 정적 변수에 대한 기사를 읽었습니다. 학습 내용을 구현하려고 할 때 정적 변수에 관한 문제가 발생했습니다. 다음은 첫 번째 코드 샘플입니다.Java에서 정적이 아닌 클래스의 정적 변수 선언하기
public class Human {
// in Human.java
public static int population = 0;
public static void main(String[] argv) {
System.out.println(population);
}
}
이 코드는 잘 작동하고, 결과는 0 하지만 다음 코드, 나는 그것을 컴파일 할 수 없습니다.
public class Human {
// in Human.java
public class Charlie extends Human {
public static int number = 0;
}
public static void main(String[] argv) {
System.out.println(new Human().new Charlie().number);
}
}
오류가 발생 일정한 표현
I이 상황 혼동이다으로 초기화하지 않는 필드 번호가 아닌 정적 내부 유형의 정적 선언 될 수 없다. 첫 번째 코드 샘플의 경우 Human 클래스는 정적이 아니며 그 안에 정적 변수를 선언 할 수있었습니다. 두 번째 코드 샘플에서 어떻게 동일한 작업을 수행 할 수 없습니까?
도움을 주시면 감사하겠습니다. 감사. :)
다른 방법은 찰리 클래스는 정적 만드는 것입니다 그것을 액세스 할 수있는 다른 방법입니다. 언급할만한 가치가있을 수도 있습니다. – Aelop
. Java에 이러한 제한이있는 이유가 있습니까? 이것은 Java VM가 외부 클래스와 다른 내부 클래스를 처리한다는 것을 의미합니까? – FunnyFunkyBuggy
@Aelop Right .. 방금 내 대답을 업데이트했습니다. – iMBMT