dongbian
2016-01-30 19:46
比如
Vehicle v=new Car();
v.test();调用的就是子类的重写的test()?
明明创建的是父类对象啊?求解!!!
你可以理解为,用子类a去赋值给父类变量b的时候,会将子类中关于父类的方法和属性直接复制给父类b的变量,因为a能够访问父类方法和属性的前提是继承自父类的方法、属性没有被覆盖,这是由于继承时要保护父类的原因 ,其实父类变量b还是指向的是子类a的代码块,a并没有被Java给回收
我感觉也是Car对象
还是说,就算:
Car a=new Car();
Vehicle v=a;
v的地址空间仍然是Dog类的地址空间?那么,第二句话在实际编写代码中有什么地方会用到呢?
额。。不对不对,创建的应该是子类对象,,
但是:
Car a=new Car();
Vehicle v=a;//上两句是不是相当于Vehicle v=new Car();?
如果是的话,那第二句不是已经转换成父类类型了么?为什么 v.test();调用的还是子类重写过的方法?
v.test();
Car w=(Car)v;
w.test();
Java入门第二季 升级版
530653 学习 · 6091 问题
相似问题