黑马程序员技术交流社区

标题: 菜鸟求助:this()的用法问题 [打印本页]

作者: yuli2039    时间: 2014-7-12 19:37
标题: 菜鸟求助:this()的用法问题
本人刚在学 毕老师的基础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)写在下边也不对,只能写在第一行!
                */
        }

}

作者: SLJ_920808    时间: 2014-7-12 19:40
this()只能放在第一行!
作者: hxwo211314    时间: 2014-7-12 19:54
可以这样写:
Person(String name,int age) {
                this.name = name
                this.age=age;
}
作者: doubandddk    时间: 2014-7-12 19:54
this()在一个构造方法中只能用一次,直接this.name = name;也不麻烦

作者: 钱程永    时间: 2014-7-13 00:58
使用一:区分成员变量和局部变量(this代表调用该方法的对象)
使用二:构造方法之间的相互调用(this语句只能定义在构造函数的第一行。因为初始化要先执行,如果在初始化中还有详细初始化,优先执行详细初始化,再执行自己的初始化。

作者: 蒲公英在飞    时间: 2014-7-13 07:42
this()在构造方法中只能使用一次,并且要放在第一行。。。。
作者: 微笑女皇    时间: 2014-7-13 09:21
共同学习!
作者: tianleboy    时间: 2014-7-13 11:48
你可以写成this.name = name;
作者: Adjin    时间: 2014-7-13 11:48
this()只能写在第一行,this相当于于new Person(),你给它个name,它就去找name的构造函数
新手也学到这里,如果我回答的不对,请大家指出哈
作者: 大头喝果啤    时间: 2014-7-13 12:09
没有这种写法
作者: 帮帮    时间: 2014-7-13 13:32
constructor call must be the first statement in a constructor
按报错的字面意思是:在构造函数里调用另一个构造函数时必须放在第一行。
这样我们就知道第二行报错的理由了
但是这种限制就说明了:只能使用一次这种方法调用构造函数

如果是更深入的理解:为什么会要求这样,表示自己现在当机了也理解不来,郁闷




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