关于 new一个java子类需先实例化父类的思考

神的力量 2016-03-31 11:33:28
我们都知道,当
new 子();
时,子类的构造方法会先调用父类的构造方法,即先new 一个父类的对象,然后才执行子类的构造方法。

那么问题来了:

A->B->C->D->E
B继承A,C继承B,D继承C,E继承D
比如一些开源的框架,某些基础类有很多子类,子类又有子类。在有很多子类的情况下,new一个D,会分别生成一个D C B A。
那么当需要new 很多D的时候,岂不是会生成很多的D C B A 类吗?
很多情况下,我们继承某个公共基类,只是为了语义上的抽象,因为基类里并没有我们子类需要的太多信息,但是JAVA都给我们生成了很多无用的父类,这样岂不是造成很多内存的浪费吗?

请大神给予解惑!谢谢。
...全文
297 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
灌水号 2016-04-01
  • 打赏
  • 举报
回复
没有构造这么多对象,在new子类的时候会把子类所需的空间都分配好,然后再递归初始化父类成员,调用构造方法。
神的力量 2016-04-01
  • 打赏
  • 举报
回复
顶一个!!...!.!.
神的力量 2016-04-01
  • 打赏
  • 举报
回复
引用 3 楼 苏臣的回复:
楼主的想法不太正确,因为实例化子类不会产生父类对象。如果是能产生父类对象的话,我们想想如果子类继承的父类是一个抽象类是不是会出现问题?
一语惊醒梦中人。。。
神的力量 2016-04-01
  • 打赏
  • 举报
回复
引用 2 楼 贫僧博企的回复:
没有构造这么多对象,在new子类的时候会把子类所需的空间都分配好,然后再递归初始化父类成员,调用构造方法。
谢谢!!!!!!!!
苏臣 2016-04-01
  • 打赏
  • 举报
回复
楼主的想法不太正确,因为实例化子类不会产生父类对象。如果是能产生父类对象的话,我们想想如果子类继承的父类是一个抽象类是不是会出现问题?

62,614

社区成员

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

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