我有一隻程式:
class Plant{
private String name;
public Plant(String name){
this.name = name;
}
public String getName(){
return name;
}
}
public class Tree extends Plant{
public void growFruit(){
}
public void dropLeaves(){
}
}
執行結果為cannot find symbol constructor Plant()
請問我要如何修改程式才能Process completed
2006-10-06 04:26:41 · 1 個解答 · 發問者 小相 1 in 電腦與網際網路 ➔ 程式設計
由於在父類別 Plant 中定義了一個有參數的建構子,因此預設建構子就被隱藏起來了;而在子類別 Tree 中沒有定義任何建構子,在編譯時編譯器會自動加入預設建構子,此預設建構子又會去呼叫父類別中的被隱藏的預設建構子,這個時候問題就發生了。 我想到的解決方法有三個,此三個方法任何一個單一存在即可,搭配使用也不會有衝突: 1. 在父類別 Plant 中加入無參數的建構子,用以取消被隱藏起來的功能 Public Plant() { name = ""; } 2. 在子類別 Tree 中加入無參數的建構子,用以呼叫父類別 Plant 中的有參數建構子 Public Tree() { super("Tree"); } 3. 在子類別 Tree 中加入有參數的建構子,隱藏原本的預設建構子 Public Tree(String name) { super(name); }
2006-10-06 10:25:03 · answer #1 · answered by ? 7 · 0⤊ 0⤋