动态方法调用(继承中的对象和引用)

时间:2014-08-24 05:41:59

标签: java class object inheritance dynamic

假设我有2个类........ A类是基类,类B是派生类,如果我创建一个引用,例如:A a=new B();这意味着引用a指向B Class的对象?如果是,我怎么能在B中调用A的重写方法,而不是B的其他方法?提前谢谢你

class A {
    m1() {
    }
}

class B extends A {
    m1() {
    }

    m2() {
    }
}


 A a=new B();
 a.m1(); //it will call overridden m1() in B 
 a.m2(); //it doesnt work if reference "a" points to object of B than why doesnt it call         m2 method ? 

2 个答案:

答案 0 :(得分:3)

Animal a=new Dog(); // Animal is parent - class, Dog is a child

表示您有一个指向狗对象的动物参考。因此,只能使用父类引用来调用在父类(Animal)中声明的方法。

在您的情况下,m2()中未定义Class A,仅在class B中定义,因此,使用A的引用,您无法{0}致电m2()

答案 1 :(得分:2)

  

如果是,我怎么能在B中调用A的重写方法,而不是B的其他方法

因为引用的类型为A。编译器只能强制从这种类型调用方法。