我正在尝试这样的事情:
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/