【发布时间】:2017-02-03 01:04:06
【问题描述】:
我正在使用接口处理一个简单的项目,但在使我的类符合接口时遇到问题。
我的想法是,既然 Article 实现了 IDedObject,我应该能够在我的 Article Class 定义中的重写函数中将 Article 作为参数传递。不幸的是,这会引发错误“类型 Article 必须实现继承的抽象方法 IDedObject.getID()”
界面
public interface IDedObject{
public int getID(IDedObject object);
public void printID(IDedObject object);
}
类
public class Article implements IDedObject{
private int articleID;
private String articleName;
private String authorName;
@Override
public int getID(Article article){
return article.articleID;
}
@Override
public void printID(Article article){
System.out.println(article.articleID);
}
}
有什么遗漏或不正确?
【问题讨论】:
-
您的界面本身没有意义。为什么它的方法带参数?为什么是自己的类型??
-
请发布您的完整要求,因为我认为您在这里缺少首要原则。
-
您的 getID 和 printID 应该以 IDedObject 作为参数。
-
@HovercraftFullOfEels 我从 Java 文档中对界面进行了建模。您可以看到 Relatable 接口包含一个使用 Relatable 对象作为参数的方法。 link
-
覆盖时不能改变类型;根据定义,覆盖需要具有超类型方法的相同签名。