我編寫了一個簡單的接口繼承示例來說明我正在嘗試執行的操作。調用/分配實現接口的類的變量
interface Fruit{
public void taste();
}
class Banana implements Fruit {
public String name = "Banana";
public void taste(){
System.out.println("yummy banana!");
}
class Strawberry implements Fruit {
public String name = "Strawberry";
public void taste(){
System.out.println("yummy strawberry!");
}
}
class Lunch<Fruittype implements Fruit> {
public Fruittype fruit;
public void tasteit() {
System.out.println("I'm going to eat a"+ fruit.name + "!");
// error: name cannot be resolved or is not a field
fruit.taste();
}
}
class exec {
public static void main(String[] args) {
Lunch<Banana> bananalunch = new Lunch<>;
bananalunch.fruit = new Banana();
bananalunch.tasteit();
}
}
所以香蕉和草莓正在實施水果。在課程午餐中,我試圖稱之爲水果名稱及其功能品味(); 雖然調用函數的味道工作得很好,我不能稱爲名稱(請參閱:在評論中的錯誤)
通緝輸出: 我要去吃香蕉! 美味的香蕉!
就像我說的,美味的香蕉的作品,但名稱無法解決。我試圖聲明「public String name =」default「」;在水果界面。然後你可以調用它,但它總會說「默認」,而不是實際課程中的名稱。
有沒有辦法獲得實現接口的泛型類型的成員? P.S.我需要這樣做,當然這個代碼只是爲了表示,但我有一個更復雜的代碼,我遇到了這個問題 - 我不想重構它,如果不是必要的。
預先感謝您!
我會爲接口添加一個'getName()'方法,並在該接口的實現中實現標準的getter/setter方法。 (當然,使'name'私密。) – David