为什么不能在本地类中声明成员接口?

Kev*_*van 5 java oop interface class local

您不能在像下面这样的块内声明接口

public void greetInEnglish() {

        interface HelloThere {
           public void greet();
        }

        class EnglishHelloThere implements HelloThere {
            public void greet() {
                System.out.println("Hello " + name);
            }
        }

        HelloThere myGreeting = new EnglishHelloThere();
        myGreeting.greet();
}
Run Code Online (Sandbox Code Playgroud)

本 Oracle 教程中,我得到了“您不能在本地类中声明成员接口”。因为“接口本质上是静态的”。

我渴望用更合理的信息来理解这一点,为什么界面本质上是静态的?

为什么上面的代码没有意义?

提前感谢您的介绍!

Anp*_*ptk 0

如果字段未定义为最终值,则任何实现都可以更改字段的值。然后它们将成为实现的一部分。接口是一个纯粹的规范,没有任何实现。

如果它们是静态的,那么它们属于接口,而不是对象,也不属于对象的运行时类型。

接口为客户端提供了一种与对象交互的方式。如果变量不是公共的,客户端将无法访问它们。