可能重复:
我们为什么不能有一个内部类的静态方法?
我知道,一个非静态内部类对象的创建需要一个外级对象和所创建的非静态内部类对象自动有一个隐藏的参考外类的对象。 但是,为什么不能在非静态内部类具有静态成员? Java的设计者就必须禁止非静态外类字段的内部类的静态方法里面的访问,这会更有意义,非?
如果它没有意义具有静态成员的内部类,为什么内部类可以通过继承一个类谁拥有静态成员继承静态成员?
我看了这个帖子了。 正如提到:
内部类可以继承未编译时常即使他们可能没有声明其静态成员。 嵌套类不属于内部类可以自由声明静态成员,根据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 {
// Error: Why a non-static inner class cannot have static fields ?
// public static int innerClassStaticField = 1;
public void doSomethingInnerClass() {
outerClassField = 3;
staticField = 1;
}
// Error: Why a non-static inner class cannot have static methods ?
// public static void doSomethingStaticInnerClass() {
// outerClassField = 4;
// }
}
public static void main(final String[] args) {
// If it does not make sense to have static members in an inner class, why inner class can inherit statis members by inheriting a class who has static
// members?
OuterClass.InnerClass.staticField = 1;
OuterClass.InnerClass.staticMethod();
}
}
class ClassWithStaticField {
public static int staticField;
public static void staticMethod() {
};
}