看板 java 關於我們 聯絡資訊
我下面這樣打就是會出錯 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