为什么接口无法实现其他接口?

102 java oop inheritance interface

我的意思是:

interface B {...}

interface A extends B {...} // allowed  

interface A implements B {...} // not allowed
Run Code Online (Sandbox Code Playgroud)

我用谷歌搜索它,我发现了这个:

implements表示定义接口方法的实现.但是接口没有实现,所以这是不可能的.

但是,interface是100%抽象类,抽象类可以实现接口(100%抽象类)而不实现其方法.定义为"界面"时有什么问题?

详细说明

interface A {
    void methodA();
}

abstract class B implements A {} // we may not implement methodA() but allowed

class C extends B {
   void methodA(){}
} 

interface B implements A {} // not allowed. 
//however, interface B = %100 abstract class B
Run Code Online (Sandbox Code Playgroud)

Jig*_*shi 107

implements意味着实现,何时interface声明只是为了提供interface不实现.

100%abstract class在功能上等同于a,interface但如果你愿意,它也可以有实现(在这种情况下它不会保持100%abstract),所以从JVM的角度来看它们是不同的东西.

此外,100%抽象类中的成员变量可以具有任何访问限定符,其中在接口中它们是隐式的public static final.

  • 从Java 8开始,Interfaces可以有默认方法,这使得它们在这方面更类似于抽象类. (7认同)
  • 谢谢你的最后一句话! (4认同)

Col*_*ert 24

implements表示将为abstract方法定义行为(显然除了抽象类),您定义实现.

extends 表示行为是继承的.

使用接口可以说一个接口应该具有与另一个接口相同的行为,甚至没有实际的实现.这就是为什么它对extends另一个接口的接口更有意义而不是实现它.


另外,请记住,即使一个abstract类可以定义abstract方法(接口的合理方式),它仍然是一个,仍然必须继承(扩展)而不是实现.