2014-09-22 100 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