[爆卦]java super建構子是什麼?優點缺點精華區懶人包

為什麼這篇java super建構子鄉民發文收入到精華區:因為在java super建構子這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者s9209122222 (海海海)看板java標題[問題] 繼承,呼叫父類別方法的問題時間Thu...


我下面這樣打就是會出錯

public class Test
{
public static void main(String[] args)
{
Book book=new Book(5);
book.DeathNote();
eroBook erobook=new eroBook(50);
erobook.ERO();
}
}
class Book
{
private int pages;
public Book(int pages)
{
setPages(pages);
}
public void DeathNote()
{
System.out.print("DeathNote is on page ");printPage();
}
public void printPage()
{
System.out.println(this.pages);
}
public void setPages(int pages)
{
this.pages=pages;
}
}
class eroBook extends Book
{
public eroBook(int pages)
{ //就是這邊出問題!!
setPages(pages);
}
public void ERO()
{
System.out.print("ero page is on page ");printPage();
}
}

結果:

Test.java:34: error: constructor Book in class Book cannot be applied to given types;
{
^
required: int
found: no arguments
reason: actual and formal argument lists differ in length


實在搞不懂錯在哪邊,看書上也是這樣呼叫父類別方法的,不過我把eroBook 的建構子裡面
改用Super 去呼叫父類別就沒問題,或者直接刪除Book的建構子,不給Book初始值也可以順
利通過編譯,請問這究竟錯在哪邊呢?

拜託各位了,有這個疙瘩在這邊我根本沒辦法繼續往下讀﹍
※ 編輯: s9209122222 (122.117.207.31), 09/24/2015 17:52:34
s9209122222: 結果我多創個Book空的建構子就OK了,為什麼啊!!! 09/24 17:55
jay80915: 子類別constructor會去呼叫super() 09/24 18:15
s9209122222: 所以子類別有用建構子,父類別就一定要有個沒輸入參 09/24 19:50
s9209122222: 數的父類別囉? 09/24 19:51
s9209122222: 更正,沒輸入參數的建構子囉? 09/24 19:51
cha122977: 一定要用父類別建構子 但沒限制要無參數 09/24 19:54
cha122977: 你用super(pages)就可以了 你的例子也是這樣用比較好 09/24 19:55
cha122977: 完全不寫的話會默認使用無參數的 09/24 19:59
cha122977: 但你的例子中Book不提供無參數的 所以默認找不到就掛了 09/24 20:00
s9209122222: 了解,感謝 09/24 20:20
ssccg: 平常沒有寫其他建構子的話,compiler會自己產生無參數的 09/25 09:57
ssccg: 但是有別的建構子就不會,就要自己加 09/25 09:58

你可能也想看看

搜尋相關網站