嘿我试图调用子类方法(ChildClass扩展SuperClass())
SuperClass s=new ChildClass();
s.childClassMethod();
它没有看到ChildClass方法我可以调用的唯一方法来自SuperClass() 我知道这可能是一个愚蠢的问题,但无论如何欢呼
答案 0 :(得分:6)
没错,您无法看到它,因为s
类型SuperClass
没有这种方法 - 这显然会导致Polymorphism原理
因此,您必须更改((ChildClass) s).childClassMethod();
之类的代码或将s
设为ChildClass
类型。
答案 1 :(得分:3)
答案 2 :(得分:3)
父母对孩子拥有的任何新方法一无所知。
public class SuperClass {
// I have no method named "childClassMethod"...
}
public class ChildClass {
public void childClassMethod() {
// Do something.
}
}
SuperClass
不了解childClassMethod()
。您必须为这两个类提供接口,或者将该方法添加到父级并在子级中覆盖它。
或者,您可以像其他人建议的那样简单地将对象强制转换为子类,但这可能不安全。
((ChildClass) s).childClassMethod()
答案 3 :(得分:2)
那是因为超类没有那种方法。
如果您希望超类能够调用该方法,则需要将其设为抽象方法并为其提供该方法。
子类是超类的一种形式,超类不是子类的形式。