【发布时间】:2014-05-10 03:06:53
【问题描述】:
嘿,我正在尝试调用子类方法(ChildClass extends SuperClass())
SuperClass s=new ChildClass();
s.childClassMethod();
它没有看到 ChildClass 方法,我可以调用的唯一方法来自 SuperClass() 我知道这可能是一个愚蠢的问题,但无论如何都欢呼
【问题讨论】:
标签: java inheritance methods
嘿,我正在尝试调用子类方法(ChildClass extends SuperClass())
SuperClass s=new ChildClass();
s.childClassMethod();
它没有看到 ChildClass 方法,我可以调用的唯一方法来自 SuperClass() 我知道这可能是一个愚蠢的问题,但无论如何都欢呼
【问题讨论】:
标签: java inheritance methods
父母对孩子掌握的任何新方法一无所知。
public class SuperClass {
// I have no method named "childClassMethod"...
}
public class ChildClass {
public void childClassMethod() {
// Do something.
}
}
SuperClass 不知道childClassMethod()。您必须为这两个类提供一个接口,或者将该方法添加到父类并在子类中覆盖它。
或者,您可以像其他人建议的那样简单地将对象转换为子类,但这可能不安全。
((ChildClass) s).childClassMethod()
【讨论】:
没错,你看不到它,因为s 是类型SuperClass,它没有这个方法——这显然会违反Polymorphism 的原则。
因此,您要么必须更改 ((ChildClass) s).childClassMethod(); 之类的代码,要么将 s 设为 ChildClass 类型。
【讨论】:
那是因为超类没有那个方法。
如果你想让超类能够调用方法,你需要把它抽象化并给它那个方法。
子类是超类的一种形式,超类不是子类的一种形式。
【讨论】:
【讨论】: