为什么接口是静态的?

nho*_*oyr 5 java static interface class local

为什么我没有内部类的接口?他们为什么天生就是static?对不起,如果这是一个愚蠢的问题,我已经尽力一次又一次谷歌,但我似乎无法将它包裹在我的头脑中.为什么我不能在内部类/本地类中声明这些?

同样作为确认,我们可以在接口中拥有静态最终变量的原因是因为它们没有指定状态或任何类型的实现吗?如果我们输掉static并使用最后一个,我们需要一个没有意义的实例,因为你无法实例化一个接口.对不起,我真的很困惑,我知道我应该提出另一个问题,但我认为这两个问题有些相关.

dre*_*ore 5

想想静态意味着什么- "与特定实例无关".因此,正如您所指出的,staticFoo的字段是一个不属于任何Foo实例的字段,而是属于Foo 本身.

现在想想接口是什么 - 它是一个契约,一个实现它的类承诺提供的方法列表.另一种思考方式是接口是一组"与特定类无关"的方法 - 任何类都可以实现它,只要它提供这些方法即可.

因此,如果一个接口与任何特定的类没有关系,那么很明显一个接口与一个类的实例无关- 对吧?

*注意,正如@Owlstead所指出的,有一些方法可以在类中定义接口.但是,为了绕过界面(这似乎是你正在处理的东西)包裹你的头脑,我现在会忽略这些可能性,因为它们会分散注意力并且可能会模糊界面的目的.