为了账号安全,请及时绑定邮箱和手机立即绑定

交通工具多态问题

582a9adf000196b203950223.jpg

582a9ae000012aa705000208.jpg

582a9ae00001aaa204200218.jpg

582a9ae100011f1305000262.jpg

我已经在子类中重写了父类的对象,然后在main函数中用父类引用了子类的对象,为什么输出的还是父类的对象?

正在回答

2 回答

你的obj1,2,3类型是Vehicle。

1 回复 有任何疑惑可以回复我~
#1

qq_魅影劲_0 提问者

子类对象在构造方法中赋值就可以正常调用了
2016-11-17 回复 有任何疑惑可以回复我~

你的obj1是用的多态的引用, 在多态的引用中, 对于变量来说,变量不能被重写。

重写只针对方法来说的

1 回复 有任何疑惑可以回复我~
#1

qq_魅影劲_0 提问者

继承的属性不能重写
2016-11-21 回复 有任何疑惑可以回复我~
#2

慕莱坞7248995 回复 qq_魅影劲_0 提问者

是继承的属性不能重写吗 还是说因为采用多态的引用, 重写才没有发生作用呢?
2016-11-21 回复 有任何疑惑可以回复我~
#3

慕莱坞7248995 回复 慕莱坞7248995

我的理解是,子类可以重写父类的属性, 如果是通过Bus bus1= new Bus();来初始化, 就可以拿到子类的属性 但是如果通过Vehicle bus2=new Bus();来多态引用, 拿到的仍然是父类的属性 也不知道对不对
2016-11-21 回复 有任何疑惑可以回复我~
#4

qq_魅影劲_0 提问者 回复 慕莱坞7248995

所以如果想用多态来调用重写子类的属性 必须在子类的构造方法里面对其进行赋值,这样在父类引用子类对象的时候拿到的就是重写后的属性.具体还得自己试试 不知道说得对不对
2016-11-22 回复 有任何疑惑可以回复我~
查看1条回复

举报

0/150
提交
取消
Java入门第二季 升级版
  • 参与学习       530559    人
  • 解答问题       6091    个

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

进入课程

交通工具多态问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信