该方法不适用于该参数

时间:2014-09-22 10:31:51

标签: java abstract

我使用以下非常简单的代码得到了标题中提到的错误,我不知道问题是什么,我知道它很可能是一个非常简单的修复,但它已经很久了,因为我完成了编码我可以& #39; t记住任何事情。

s1.setaddress("31 Main street");

这是显示错误的代码段,我认为影响此代码的代码首先来自学生类,然后第二个代码段将成为大师级人员

@Override
public String getaddress() {
    // TODO Auto-generated method stub
    return address;
}
@Override
public String setaddress() {
    return address;
}

人类

public abstract class Person {
protected String name;
protected String surname;
protected String address;
protected int age;

public abstract String getName();
public abstract String getsurName();
public abstract String getaddress();

public abstract String setName();
public abstract String setsurName();
public abstract String setaddress();
public abstract int age();

public String toString(){
    // TODO Auto-generated method stub
    return "Name: " + name + " " + surname + "Age: " + age + "\n"  + "Address: " + address;
};

感谢您的帮助

3 个答案:

答案 0 :(得分:2)

您的setAddress方法不接受任何参数,但您尝试使用String进行调用。

尝试:

public void setAddress(String str) {
    this.address=str;
}

答案 1 :(得分:2)

您的setAddress应接受修改address字段的参数:

@Override
public String setaddress(String address) {
    this.address = address;
}

由于这是一个重写方法,您还需要在基类中具有相同的签名:

public abstract String setaddress(String address);

您还可以删除上述声明中的返回类型String,因为它现在变得无用。

答案 2 :(得分:1)

您的getaddress()setaddress()方法是相同的,所以我认为它只是复制粘贴错字。有效setaddress()应如下所示:

@Override
public void setaddress(String address) {
    this.address = address;
}

不要忘记在抽象类中更改返回类型。