我编写了一个简单的接口继承示例来说明我正在尝试执行的操作。调用/分配实现接口的类的变量
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