public class test{
public static void main(String args[]){
A a= new B();
System.out.println(a.var);
System.out.println(a.f());
}
}
class A {
int var =1;
int f(){
return var ;
}
}
class B extends A {
int var =2;
int f(){
return var ;
}
}
请问为什么a.var =1,而a.f()=2。a指向子类对象的引用,调用的方法是子类的方法,为什么调用的成员变量却是父类的,请解惑。谢谢。
[b]问题补充:[/b]
第一次发贴,居然没找到地方可以回复。请指点怎样才能回复自己的帖子。
“
属性的值取父类还是子类并不取决于我们创建对象的类型,而是取决于我们定义的变量的类型”
我也知道是这样子的,但不知道原因所以就来这问了。