假设我有 3 个类,Tester、Fruit(父类(super class))和 Apple(子类)
我在 Apple 中编写了一个新方法(它扩展了 Fruit)。方法是:
public String getAppleColor()
现在假设在测试器中我创建了一个包含 10 个水果的数组
Fruit fruitArray = new Fruit[10]
并说我做了其中一个
fruitArray[3] = new Apple()
这很好,因为苹果也是水果类型。但是我希望在数组的这个特定元素上使用 getAppleColor() :
String appleColor = fruitArray[3].getAppleColor();
这怎么行不通?当我在 Eclipse 中查看 FruitArray[3] 上的可用方法时,我的 Apple 方法没有显示出来,但我将 FruitArray[3] 变成了 Apple?
最佳答案
您无法在 Fruit
引用上调用 getAppleColor()
,它没有声明该方法
更好的设计是定义 getFruitColor()
并创建 Fruit
抽象类/使其成为接口(interface)并强制每个 Fruit
实现此方法
编译器不知道它将在运行时分配什么实现
关于java - 尝试使用子类方法,但它不允许我,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21346606/