我刚开始学习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类是非静态的,并且我被允许在其中声明一个静态变量。为什么我不能在第二个代码示例中做同样的事情呢?
任何帮助将不胜感激。谢谢。 :)