java - 从子类调用方法

标签 java methods casting

我正在尝试这样的事情:

public class Dog {
}

public class Cat extends Dog {
    private void mew() {
    }
}

Dog d = new Dog();
d.mew();

在运行时 d 将由于其他方法而包含一个 cat 对象,但我无法编译。

最佳答案

应使用 Cat 实例初始化 Dog(或使用 SpecialStone 实例初始化 Stone):

Stone s = new SpecialStone();

然后您可以调用 SpecialStone 上的方法(仅当您通过子类初始化父类时这才有效):

if (s instanceof SpecialStone) {
   (SpecialStone)s.specialMethod();
}

另一种方法是使用多态性:

public class Stone {
   public void specialMethod() {

   }
}

public class SpecialStone {
   @Override
   public void specialMethod() {
   }
}

但它会将 specialMethod 添加到 Stone 的每个实例

关于java - 从子类调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50209203/

相关文章:

java - 如何将 Maven 添加到现有的 IntelliJ Android 项目

java - 如何获取线程尝试访问同步方法的次数

c# - 从 Javascript 调用 C# 方法

javascript - JS - 将 KBD 事件转换为链接点击

java - 使用 ArrayList<Class?> 进行转换?

c++ - 如何使用多重继承执行转换

java - 如何以编程方式为选定的实体字段绑定(bind) Hibernate 类型?

java - 从停止处恢复 Activity 而不会丢失数据

java - 如何在方法中接受文本文件?

f# - 如何从 obj 向下转换为 option<obj>?