2014-09-22 94 views
0

我使用以下非常简单的代码得到标题中提到的错误,我不确定问题是什么,我知道它很可能是一个非常简单的修复程序,但它已被只要我完成了编码,我就不会想到任何事情。该方法不适用于自转

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; 
}; 

感谢您的帮助

+0

它是在编译时或运行时,也'setAddress'没有任何iny参数像'setAddress(字符串地址)' – 2014-09-22 10:35:05

回答

2

setAddress应该接受该修改address领域的说法:

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

由于这是一个重写的方法,你需要在基类相同的签名太:

public abstract String setaddress(String address);

您也可以在上面的声明中摆脱返回类型String,因为它现在变得毫无用处。

+0

感谢您的帮助,这已经解决了我的问题 – TAM 2014-09-22 10:42:19

+0

它应该有返回类型'void',或者返回一些东西。 – immibis 2014-09-22 11:05:58

2

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

尝试:

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

getaddress()setaddress()方法都是一样的,所以我认为它只是复制粘贴错字。有效setaddress()应为以下几点:

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

不要忘记在抽象类也改变返回值类型。

+0

感谢您的答复,尝试此但我只是得到错误方法setaddress(字符串)的类型学生必须重写或实现一个超类型方法 – TAM 2014-09-22 10:40:35

+0

@TAM yep,正如我所说的,你应该在父类Person类中更改此方法的返回类型。将'String'改为'void' – nikis 2014-09-22 10:46:40

+0

是啊,我的不好,第一天回来,现在得到它,谢谢 – TAM 2014-09-22 10:49:08