求解答,

Barboosa 2018-02-28 11:41:05

向下转型的时候父类对象为什么需要子类来开辟内存?
A a= new B;
为什么是B
...全文
1083 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
写代码的陈皮 2018-07-28
  • 打赏
  • 举报
回复
利用Java中的多态了。
父类的引用可以指向子类的对象
多态(Polymorphism)
同一个行为具有多个不同表现形式或形态的能力,就是同一个接口,使用不同实例而执行不同操作。
具体可以看https://blog.csdn.net/weixin_38500325/article/details/81149704https://blog.csdn.net/weixin_38500325/article/details/81149704
hf2541 2018-07-27
  • 打赏
  • 举报
回复
先向上转,才能向下转
small_clear 2018-07-27
  • 打赏
  • 举报
回复
基本的多态
A是B的父类对吧
如果把A当做是动物,那么B就是猫,或者是狗或者其他只要是动物(先理解这句话)
动物不是猫,不是狗,但是猫和狗都是动物
在向下转型之前首先需要它本身是一个向上转型的对象
打个比方:向上转型就是A(动物) a(动物对象)=new B(猫)
因为,你使用动物对象a的时候,它可以是猫
如果你又用这个动物作为对象new了一个狗
那么,这个a对象也可以是狗
只有向上转型的对象才会用到向下转型
本来是猫 向上转型为动物
然后它才能向下转型重新成为猫
至于你说的为什么是B
再打个比方 你将这个猫向上转型成为动物 你总不能把它向下转型变成狗吧
这是不可能的事 , 本来是猫,才能向下转型成为猫
同理
你new的时候new的是B 你总不能给他向下转型成为一个C吧
除非你之前用A做引用new了一个C 他才能向下转型成为C
Weyland7 2018-07-27
  • 打赏
  • 举报
回复
在你调用下面三个方法的时候,如果你的B类里面重写了那三个方法,下面那行B b = (B)a完全是多余的,你写不写结果都一样,基本的多态吧
verejava 2018-07-25
  • 打赏
  • 举报
回复
子类继承了 父类的东西。 子类实例化,父类也得实例化。
stacksoverflow 2018-07-25
  • 打赏
  • 举报
回复
忽略等号左边的类型
屌丝Java 2018-03-09
  • 打赏
  • 举报
回复
在继承方面,a是A类型的对象变量,A类的对象a参考的是B类的对象实体。
Rolf已存在 2018-03-02
  • 打赏
  • 举报
回复
比着视频还是书上敲的?你这样问说明你没看明白
qq_37966597 2018-03-01
  • 打赏
  • 举报
回复
这差不多是多态那边的 直接B b = new B() 也是一样的
oO临时工Oo 2018-02-28
  • 打赏
  • 举报
回复
A a = new B(); B b = (B)a; 两行合成一行,更合理。 B b = new B()

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧