java - 尝试使用子类方法,但它不允许我

标签 java inheritance

假设我有 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/

相关文章:

java - 在 Java 中为 CustomButton 创建 ActionEvent 对象

Java:正确引用 ETag 的例程?

java - 视觉范例,不能在 DCD 上使用持久性继承

java - 为什么 Java 不允许子类不能访问其父类(super class)的任何构造函数?

用于集成 WSDL、REST 等的 Java 框架

java - 为什么生产者/消费者线程演示卡在错误的位置?

javascript - 为什么 Javascript 默认不支持继承?

c++ - 确保参数是控制台的输出流

c# - 避免 "Access to a static member of a type via a derived type"

java - 捕获组吃掉一些角色