java嵌套接口和内部类

时间:2011-04-08 09:59:13

标签: java interface static final inner-classes

为什么java嵌套接口不能是非静态的?为什么内部类不能包含静态非最终成员?

我在通过Gosling时遇到了这些问题,但还没有找到答案。

2 个答案:

答案 0 :(得分:8)

如果嵌套类是非静态的(即内部类),这意味着它的每个实例都绑定到外部类的实例。由于接口没有自己的实例,因此将实现类绑定到外部对象似乎没有用,因此默认情况下将其设置为静态似乎是合理的。

答案 1 :(得分:2)

我不确定为什么你不能在内部类中拥有静态非最终成员,但由于静态成员没有绑定到任何特定的对象实例,因此无论它是在内部类还是外部类中都没有区别。 / p>

E.g。

class OuterClass {

  private static int staticMember;

  class InnerClass {

    void incStatic() {
      staticMember++;
    }

  }

}

您可以从内部类访问静态成员,就像它在内部类中一样。