English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

我有一隻程式:
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 電腦與網際網路 程式設計

1 個解答

 由於在父類別 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

fedest.com, questions and answers