Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java嵌套接口和内部类_Java_Interface_Static_Final_Inner Classes - Fatal编程技术网

java嵌套接口和内部类

java嵌套接口和内部类,java,interface,static,final,inner-classes,Java,Interface,Static,Final,Inner Classes,为什么java嵌套接口不能是非静态的?为什么内部类不能包含静态的非最终成员 我在浏览Gosling时遇到了这些问题,但还没有找到答案。如果嵌套类是非静态的(即内部类),这意味着它的每个实例都绑定到外部类的一个实例。由于接口本身没有实例,将实现类绑定到外部对象似乎没有用处,因此,将其默认为静态似乎是合理的。我不确定为什么在内部类中不能有静态的非最终成员,但由于静态成员没有绑定到任何特定的对象实例,所以无论它是在内部类还是外部类中都没有区别 例如 您可以从内部类访问静态成员,就像它在内部类中一样。您

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


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

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

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

例如


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

您通过了Gosling?他不介意吗?@Joachim Sauer“内部类是一个嵌套类,它不是显式或隐式声明为静态的。[…]成员接口(§8.5)总是隐式静态的,因此它们永远不会被认为是内部类。”引用,所以没有内部类这样的东西interface@Zoltan当前位置问题是为什么没有这样的东西?
class OuterClass {

  private static int staticMember;

  class InnerClass {

    void incStatic() {
      staticMember++;
    }

  }

}