A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王小五 中级黑马   /  2012-11-23 15:12  /  1450 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

java里在类中用super调用父类构造方法时候,为什么调用语句必须是子类的第一条语句?

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

5 个回复

倒序浏览
因为子类继承了父类的的成员变量,那么在对子类中这些成员变量进行初始化时,就要先考虑父类是怎么对这些变量进行初始化的。所以需要放在子类构造函数中第一条被先执行,然后再完成子类构造函数对对象的初始化。

评分

参与人数 2技术分 +2 收起 理由
刘芮铭 + 1 赞一个!
古银平 + 1 赞一个!

查看全部评分

回复 使用道具 举报
不在第一行就失去了初始化的含义 因为构造函数后面还有可能改变属性的值

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

回复 使用道具 举报
如果你想用super继承父类构造的方法
但是没有放在第一行的话
那么在super之前的语句
肯定是为了满足你自己想要完成某些行为的语句
但是你又用了super继承父类的构造方法
那么以前所做的修改就都回到以前了
也就是说又成了父类的构造方法了
比如
class Father
{
public Father()
{String name=null;
int age=0;}
}
class Son extends Father
{
public Son()
{String name="学生";
super();}
}
//这样子的话就会把Son里面的name又变成了null
没有达到你想要的效果
回复 使用道具 举报
好心人啊。顶楼上的。
回复 使用道具 举报
最简单的一个问题,先你爸爸还是先有你? 因为子类继承自父类,所以子类构造函数内,必须要先调用父类的构造函数,以保证父类在子类前被初始化
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马