课程
/后端开发
/Java
/Java入门第二季 升级版
比如
Vehicle v=new Car();
v.test();调用的就是子类的重写的test()?
明明创建的是父类对象啊?求解!!!
2016-01-30
源自:Java入门第二季 升级版 10-2
正在回答
你可以理解为,用子类a去赋值给父类变量b的时候,会将子类中关于父类的方法和属性直接复制给父类b的变量,因为a能够访问父类方法和属性的前提是继承自父类的方法、属性没有被覆盖,这是由于继承时要保护父类的原因 ,其实父类变量b还是指向的是子类a的代码块,a并没有被Java给回收
dongbian 提问者
我感觉也是Car对象
还是说,就算:
Car a=new Car();
Vehicle v=a;
v的地址空间仍然是Dog类的地址空间?那么,第二句话在实际编写代码中有什么地方会用到呢?
额。。不对不对,创建的应该是子类对象,,
但是:
Vehicle v=a;//上两句是不是相当于Vehicle v=new Car();?
如果是的话,那第二句不是已经转换成父类类型了么?为什么 v.test();调用的还是子类重写过的方法?
v.test();
Car w=(Car)v;
w.test();
举报
课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙
4 回答求大神解答我的疑惑
1 回答很困惑!!求大神指导
3 回答求解,大神
1 回答Super和This关系!真的不懂求大神讲解
2 回答求大神解答~