为什么一个接口不能实现另一个接口?

2022-08-31 09:44:21

我的意思是:

interface B {...}

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

interface A implements B {...} // not allowed

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

implements 表示为接口的方法定义实现。但是,接口没有实现,因此这是不可能的。

但是,接口是一个 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

答案 1

implements意味着实现,当意味着声明只是为了提供不用于实现。interfaceinterface

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

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


答案 2

implements意味着将为方法定义行为(显然抽象类除外),您定义实现。abstract

extends意味着行为是遗传的。

对于接口,可以说一个接口应该具有与另一个接口相同的行为,甚至没有实际的实现。这就是为什么将一个接口连接到另一个接口而不是实现它更有意义的原因。extends


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