gpt4 book ai didi

java - 在类中实现接口(interface)方法时出错

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:37:18 24 4
gpt4 key购买 nike

我正在使用接口(interface)处理一个简单的项目,但我在让我的类符合接口(interface)方面遇到了问题。

我的想法是,由于 Article 实现了 IDedObject,因此我应该能够将 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);
}
}

什么遗漏或不正确?

最佳答案

只是猜测,因为我们没有您的要求,但我认为您的接口(interface)已损坏,您的方法不应该需要参数,更不用说它自己类型的参数了。考虑改变:

public interface IDedObject{
public int getID(IDedObject object);
public void printID(IDedObject object);
}

到:

public interface IDedObject{
public int getID();
public void printID();
}

那么实现就很简单了

public class Article implements IDedObject{
private int articleID;
private String articleName;
private String authorName;

// constructor and other getter and setter methods here

@Override
public int getID(){
return articleID;
}

@Override
public void printID(){
System.out.println("" + articleID);
}
}

至于您的编译器错误——任何重写方法的签名必须与接口(interface)方法的签名相匹配。因此,例如在链接中的 Rectangle 示例中,如果您扩展该类或接口(interface),则方法参数必须采用接口(interface)中声明的接口(interface)参数。

例如,假设您有以下接口(interface):

public interface FooInterface {
int getValue();
void printValue();
int difference(FooInterface fi);
}

实现此接口(interface)的具体类必须为差异方法使用 FooInterface 参数。例如:

class FooClass implements FooInterface {

private int value;

@Override
public int getValue() {
return this.value;
}

@Override
public void printValue() {
System.out.println(String.valueOf(value));
}

@Override // can't use FooClass for parameter here
public int difference(FooInterface fi) {
return value - fi.getValue();
}

}

关于java - 在类中实现接口(interface)方法时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39690086/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com