假设我有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 ?
答案 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
。编译器只能强制从这种类型调用方法。