Eclipse显示缺少子类的接口方法,而不是父类

时间:2011-03-01 14:33:02

标签: java eclipse interface

在Eclipse中,为什么缺少子类上显示的接口方法,而不是父类?

假设我有一个简单的界面:

public interface ISpeaks {
  String talk();
}

然后,我在扩展的类上实现了这个接口:

public abstract class Cat implements ISpeaks {
  // forgot to implement talk()
}

public class Tiger extends Cat {
  // also didn't implement talk()
}

Eclipse抱怨 Tiger缺少方法talk()(确切错误:The type Tiger must implement the inherited abstract method ISpeaks.talk())。我希望它告诉我 Cat 缺少talk(),因为Cat是显式实现接口的类。不是老虎。

这绝对是一个“呃?”对我来说,因为我在Spring / Hibernate中,每当我向DAO接口添加一个方法时,每次数据库感知的测试用例都会出现这样的错误,这是一个方法丢失 - 而不是一个错误嘲笑我的DAO的基本测试方法。

1 个答案:

答案 0 :(得分:9)

因为Cat类是抽象的,所以您不必实现所有接口方法。

您只需要在实现ISpeaks的具体类上实现所有接口方法,例如Tiger

这是合乎逻辑的,因为无法实例化Cat类型的对象,因此无法创建不完全实现接口的对象。

http://download.oracle.com/javase/tutorial/java/IandI/abstract.html

的最后一段给出了一个类似的例子