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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 贾振凯 于 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()调用父类构造函数的语句也要位于子类构造函数中的第一行!!!!


不知正确与否,求高手点评指正,谢过先呵呵。。。。。。

评分

参与人数 1黑马币 +12 收起 理由
黄玉昆 + 12 淡定

查看全部评分

2 个回复

倒序浏览
金币不要啦昆哥,我想知道自己想的对不对呵呵。。。。。。。。。
回复 使用道具 举报
有些郁闷,为啥写那么多的构造函数:
Person (String name,int age)
{
       this.name=name;
      this.age=age;
}这多省事,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马