继承不能调用子类方法

时间:2014-03-30 21:52:12

标签: java inheritance methods

嘿我试图调用子类方法(ChildClass扩展SuperClass())

SuperClass s=new ChildClass();
s.childClassMethod();

它没有看到ChildClass方法我可以调用的唯一方法来自SuperClass() 我知道这可能是一个愚蠢的问题,但无论如何欢呼

4 个答案:

答案 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)

那是因为超类没有那种方法。

如果您希望超类能够调用该方法,则需要将其设为抽象方法并为其提供该方法。

子类是超类的一种形式,超类不是子类的形式。