黑马程序员技术交流社区

标题: super方法 [打印本页]

作者: 王小五    时间: 2012-11-23 15:12
标题: super方法
java里在类中用super调用父类构造方法时候,为什么调用语句必须是子类的第一条语句?
作者: 李有    时间: 2012-11-23 15:19
因为子类继承了父类的的成员变量,那么在对子类中这些成员变量进行初始化时,就要先考虑父类是怎么对这些变量进行初始化的。所以需要放在子类构造函数中第一条被先执行,然后再完成子类构造函数对对象的初始化。
作者: jerry2627    时间: 2012-11-23 15:29
不在第一行就失去了初始化的含义 因为构造函数后面还有可能改变属性的值

作者: 聽聽我dē❤    时间: 2012-11-23 15:44
如果你想用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
没有达到你想要的效果

作者: 杨伟斌    时间: 2012-11-23 18:00
好心人啊。顶楼上的。
作者: 王阳    时间: 2012-11-23 20:17
最简单的一个问题,先你爸爸还是先有你? 因为子类继承自父类,所以子类构造函数内,必须要先调用父类的构造函数,以保证父类在子类前被初始化




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2