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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yuli2039 中级黑马   /  2014-7-12 19:37  /  2119 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本人刚在学 毕老师的基础java视频第六天,今天学到this关键字时遇到一下问题,望各位前辈解答!如下代码:在Person类中,分别定义了三个 构造函数,为了提高代码的复用性,第三个直接引用了第一个构造函数,但是怎么同时引用两个?
class Person
{
        private String name;
        private int age;
        static String country ="CN";


        Person(String name)
        {
                this.name=name;
        }

        Person(int age)
        {
                this.age=age;
        }

        Person(String name,int age)
        {
                this(name);
                this.age=age;
                /*
                此处怎么同时引用两个构造函数(name和age)?
                自己试了一下 this(name),this(age);   编译出错,this(age)写在下边也不对,只能写在第一行!
                */
        }

}

评分

参与人数 1技术分 +1 收起 理由
Doraemon + 1

查看全部评分

10 个回复

倒序浏览
this()只能放在第一行!
回复 使用道具 举报
可以这样写:
Person(String name,int age) {
                this.name = name
                this.age=age;
}
回复 使用道具 举报
this()在一个构造方法中只能用一次,直接this.name = name;也不麻烦

评分

参与人数 1技术分 +1 收起 理由
Doraemon + 1

查看全部评分

回复 使用道具 举报
使用一:区分成员变量和局部变量(this代表调用该方法的对象)
使用二:构造方法之间的相互调用(this语句只能定义在构造函数的第一行。因为初始化要先执行,如果在初始化中还有详细初始化,优先执行详细初始化,再执行自己的初始化。
回复 使用道具 举报
this()在构造方法中只能使用一次,并且要放在第一行。。。。
回复 使用道具 举报
共同学习!
回复 使用道具 举报
你可以写成this.name = name;
回复 使用道具 举报
Adjin 中级黑马 2014-7-13 11:48:59
9#
this()只能写在第一行,this相当于于new Person(),你给它个name,它就去找name的构造函数
新手也学到这里,如果我回答的不对,请大家指出哈
回复 使用道具 举报
没有这种写法
回复 使用道具 举报
constructor call must be the first statement in a constructor
按报错的字面意思是:在构造函数里调用另一个构造函数时必须放在第一行。
这样我们就知道第二行报错的理由了
但是这种限制就说明了:只能使用一次这种方法调用构造函数

如果是更深入的理解:为什么会要求这样,表示自己现在当机了也理解不来,郁闷
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马