本帖最后由 贾振凯 于 2013-3-6 12:09 编辑
这集视频里毕老师的那个说法我没太明白,自己构思出来一个不知正确与否:
class Person{
private String name;
private int age;
Person(){
}
Person(String name){
this.name = name;
}
Person(String name,int age){
this(name); //为什么构造函数中调用其他重载构造函数的语句必须要位于第一行?????
this.age = age;
}
}
我是这样想的:
在Pereson p = new Person(jzk"",23);这个语句的初始化过程是
先在堆内分配内存空间给p实体,然后,对象属性的初始化是在执行构造函数之前完成的,所以如果将
Person(String name,int age){
this(name);
this.age = age;
}
变为
Person(String name,int age){
this.age = age;
this(name);
}
那么在执行this调用的另一构造函数前,就需要先进入构造函数完成this.age = age;这一初始化语句,显然是违背对象初始化顺序的。
同理,通过super()调用父类构造函数的语句也要位于子类构造函数中的第一行!!!!
不知正确与否,求高手点评指正,谢过先呵呵。。。。。。 |