当前位置: 首页 > 面试题库 >

为什么接口是静态的?

司寇山
2023-03-14
问题内容

为什么我的内部类中没有接口?为什么是天生的static?抱歉,如果这是一个愚蠢的问题,我已经尽力一遍又一遍地用Google搜索,但似乎无法将其包裹在脑海中。如为什么不能在内部类/局部类中声明这些?

同样作为一个确认,我们在接口中可以包含静态最终变量的原因是因为它们未指定状态或任何此类实现权?如果我们输了static而只使用了final,那么我们需要一个没有意义的实例,因为您无法实例化接口。抱歉,我真的很困惑,我知道我应该再提一个问题,但是我认为这两个问题有些相关。


问题答案:

考虑一下 静态
意味着什么-“与特定实例无关”。因此,正如您所指出的那样,staticFoo的字段是不属于任何Foo实例,而是属于Foo
本身的字段。

现在考虑一下接口是什么-它是一个合同,一个实现该接口的类承诺提供的方法列表。另一种思考方式是接口是“与特定类无关”的一组方法- 任何
类都可以实现它,只要它提供了这些方法即可。

因此,如果一个接口与任何特定的类都不相关,那么显然一个接口就不会与某个类的 实例 相关-对吗?

*注意,正如@Owlstead指出的那样,有一些方法可以在类中定义接口。但是,为了使您的头脑围绕某个接口是什么(似乎是您正在使用的接口),我暂时将忽略那些可能性,因为它们分散了人们的注意力,并且可能使总体上的接口目的变得晦涩。



 类似资料:
  • 问题内容: 当我发现它是一个接口时,我正在阅读接口。我不太了解什么是静态接口,它与常规接口有何不同? 这是接口的定义。此处的文档: Map.Entry 。 问题答案: 我对它不是内部接口的情况感到好奇。 所述改性剂只允许在嵌套类或接口。在您的示例中,嵌套在接口内部。 对于接口,修饰符实际上是可选的。对于接口来说,这种区别是没有意义的,因为它们不包含任何仍然可以访问外部接口的代码。

  • 我知道在Java中,静态方法和实例方法一样是继承的,不同的是,当它们被重新声明时,父实现是隐藏的,而不是重写的。好吧,这有道理。但是,Java教程指出 接口中的静态方法从不继承。 然而,

  • 不允许在接口中使用静态/最终方法的原因到底是什么?

  • 问题内容: 我开始用Java编程。 一本书说,在这种情况下,我应该使用static,但没有明确说明为什么应该使用静态方法或含义。 你能澄清一下吗? 问题答案: 的概念与某物是类的一部分还是对象(实例)有关。 对于声明为的方法,它表示该方法是一个类方法- 该方法是类的一部分,而不是对象的一部分。这意味着另一个类可以通过引用来调用另一个类的类方法。例如,调用的run方法可以通过以下方式完成: 另一方面

  • 问题内容: 我刚刚在我们的代码库中找到了一个静态嵌套接口。 我以前从未见过。原始开发人员遥不可及。因此,我不得不问: 静态接口背后的语义是什么?如果我删除,会发生什么变化static?为什么有人会这样做? 问题答案: 上例中的static关键字是多余的(嵌套接口自动为“ static”),可以删除而不会影响语义;我建议将其删除。接口方法上的“公共”和接口字段上的“公共最终”也是如此-修饰符是多余的

  • 问题内容: 为什么和方法在中定义为方法 ? 问题答案: 该代码仅在执行时执行,在这种情况下,告诉yield将毫无意义。如此以来,只有线程调用价值上是当前线程,它们使该方法这样你就不会浪费时间去打电话的其他线程。