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

ash*_*999 0 java eclipse interface

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

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

public interface ISpeaks {
  String talk();
}
Run Code Online (Sandbox Code Playgroud)

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

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

public class Tiger extends Cat {
  // also didn't implement talk()
}
Run Code Online (Sandbox Code Playgroud)

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

这绝对是一个"呃?" 对我来说,因为我在Spring/Hibernate中,每当我向DAO接口添加一个方法时,每次数据库感知的测试用例都会出现这样的错误,这是一个缺少方法的错误 - 而不是单个错误模拟我的DAO的基本测试方法.

Mat*_*ard 9

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

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

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

http://download.oracle.com/javase/tutorial/java/IandI/abstract.html的最后一段给出了一个类似的例子

  • @ ashes999 - 如果你不需要创建非专用的`Cat`实例,那么将它声明为`abstract`是正确的. (2认同)