Java:类和扩展类

时间:2015-10-16 12:54:26

标签: java class oop extends superclass

假设我有一个名为A的类。我有另一个扩展名为A的{​​{1}}的类。

B包含一个名为BBsMethod()不包含的方法。

假设我声明了一个AA

的数组

我指定arrA = new A[10]

我尝试通过arrA[1] = new B();

致电BsMethod

这会给出一个错误,指出arrA[1].BsMethod()不包含此方法。我应该更改哪些内容,以便我可以使用arrA来呼叫BsMethod

2 个答案:

答案 0 :(得分:2)

这是失败的,因为在编译java编译器无法将方法与class A对象绑定,它无法在BsMethod()中找到方法class A

您可以将对象强制转换为class B并使用它。

((B)arrA[1]).BsMethod();

动态绑定中,实际方法调用在运行时确定。因此,如果您在超类中有一个方法,并且您也在子类中覆盖它。然后,在运行时确定用于这种方法的实际方法调用。

您可以通过示例阅读有关静态和动态绑定的更多信息。 Static Binding and Dynamic Binding

答案 1 :(得分:1)

您必须将arrA[1]强制转换为B,因为arrAA的数组,此时编译器不知道B

这样称呼:((B)arrA[1]).BsMethod()