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

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

孔鸿哲
2023-03-14
问题内容

我的意思是:

interface B {...}

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

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

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

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

问题答案:

implements表示实现,当interface旨在声明仅提供interface不提供实现时。

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

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



 类似资料:
  • 根据Android指南,http://developer.android.com/training/basics/fragments/communicating.html一个片段应该通过宿主Activity向另一个片段发送数据。我想知道这有什么原因。因为在我的代码中,我放置了一个变量来保存指向另一个片段的指针,并在onActivityCreated中赋值 后来,如果我想为FragmentType2

  • 我有两个接口。第一个: 第二个使用第一个接口作为其方法定义中的参数类型: 我有一个实现 IGoable 接口的类: 问题来了。我在一个类中实现了IMove接口,并尝试在实现的move()方法中使用ImplGoable类作为参数,如下所示: 它给我以下错误: TestGo类型的方法移动(ImpGoable)必须重写或实现超类型方法 为了避免错误,我必须使用 IGoable 接口作为实现方法中参数的类

  • 问题内容: 我一直在研究J2EE的JMS API,发现了一个奇怪的行为,其中在接口(例如Session中的createQueue)中声明的某些方法在诸如QueueSession之类的子接口中再次声明,并且具有相同的文档。 因为子接口“继承”了它继承的接口的所有方法声明,并且由于JavaDoc工具没有问题,所以可以对子接口的JavaDoc进行排序并创建“继承的操作”列表,因此我无法弄清楚这将实现什么

  • 问题内容: 在Java中,当接口扩展另一个接口时: 为什么要实现其方法? 当接口不能包含方法主体时,如何实现其方法 当扩展另一个接口而不实现它时,如何实现这些方法? 接口实现另一个接口的目的是什么? 这是Java的主要概念! 编辑: 在eclipse中,除了中的实现方法之外,还有实现符号。 当我将鼠标悬停在它上面时,它表示它实现了该方法!!! 问题答案: 为什么要实现其方法?当接口不能包含方法主体

  • 我有一个生产者,它获取数据A,产生数据B,并将其发送出去 为了证明我的问题,想象一下我有像上面这样的制作人。一个加载所有数据,然后在完成后立即批量发送,第二个立即发送数据(因此它不批量发送数据,但每当有新数据时,createdit立即发送) 大多数生产者会在每加载一个数据之后发送数据,但很少有人会马上发送。如果生产者立即发送数据,则方法将保持为空。然而,这似乎是一种糟糕的做法,可能违反了一些OOP

  • 类别:账户余额 我已经把这两个类都放在Balance.java和Account tBalance.java.这两个文件都在E:/程序/MyPack. Balance.java编译没有错误但是当我编译Account tBalance.java它给出错误:找不到符号"平衡". 我无法弄清楚为什么当两个类都在同一个包中声明时? 我正在使用javac B从MyPack编译alance.javajavac