Я новичок в 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);
}
}
Ошибка: Число поля не может быть объявлено статическим в нестатическом внутреннем типе, если не инициализировано с постоянным выражением
Я путать с этой ситуацией. Для первого примера кода мой класс Human не статичен, и мне было разрешено объявлять в нем статическую переменную. Почему я не могу сделать то же самое для своего второго образца кода.
Любая помощь будет оценена по достоинству. Благодарю. :)
другой путь будет сделать класс чарли статичным. возможно, стоит упомянуть – Aelop
Я вижу. Есть ли какие-либо причины для Java, чтобы иметь это ограничение? Означает ли это, что Java VM рассматривает внутренний класс, отличный от внешнего класса? – FunnyFunkyBuggy
@ Aelop Right .. Я только что обновил свой ответ. – iMBMT