Tag: non static

为什么非静态内部类不能拥有静态成员(字段和方法)?

可能重复: 为什么我们在内部类中没有静态方法? 我知道创建一个非静态内部类对象需要一个外部类对象,而创建的非静态内部类对象自动拥有一个对外部类对象的隐藏引用。 但为什么非静态内部类不能有静态成员呢? Java设计者只需要禁止在内部类的静态方法内访问非静态外部类字段,它会更有意义,非? 如果在内部类中使用静态成员没有意义,为什么内部类可以通过inheritance具有静态成员的类来inheritance静态成员? 我也读了这篇文章 。 如上所述: 内部类可以inheritance非编译时常量的静态成员,即使它们可能不会声明它们。 不是内部类的嵌套类可以根据Java编程语言的通常规则自由地声明静态成员。 这是一个惯例吗? 这是我的代码: public class OuterClass { private int outerClassField; public void doSomethingOuterClass() { outerClassField = 1; } public static void doSomethingStaticOuterClass() { // outerClassField = 2; // Error: Because static method cannot access an specific object’s field } public class InnerClass extends ClassWithStaticField { […]