黑马程序员技术交流社区

标题: this(name); [打印本页]

作者: 橸瑩膤漃寞林    时间: 2014-3-11 15:31
标题: this(name);
本帖最后由 橸瑩膤漃寞林 于 2014-3-11 21:19 编辑

Person(String name,int age)
        {
                this(name);
                this.name = name;
                this.age = age;

this(name);谁能帮我解释一下吗,看不懂。
               


作者: SyouRai_Tsk    时间: 2014-3-11 15:38
能否贴出全部代码,谢谢!
作者: 房建斌    时间: 2014-3-11 15:40
你的代码不全,少了一个接收name的构造方法。完整的代码时这样的:
  1. public Person(String name, int age) {
  2.                 this(name);
  3.         this.name = name;
  4.         this.age = age;
  5.         }
  6.        
  7.         public Person(String name) {
  8.                 System.out.println(name);
  9.         }
复制代码

this(name)的意思就是调用接收参数为String的那个构造方法。



作者: 橸瑩膤漃寞林    时间: 2014-3-11 15:41
class Person
{
        private String name;
        private int age;
       
        {
               
                System.out.println("code run");
        }
       
        Person()
        {
                //this("hah");
                System.out.println("person run");
        }
        Person(String name)
        {
                //this();
                this.name =name;
        }
        Person(String name,int age)
        {
                //this(name);
                //this.name = name;
                this.age = age;
               
        }

}

class  PersonDemo4
{
        public static void main(String[] args)
        {
                new Person();
                //Person p = new Person("lisi",30);
                //Person p1 = new Person("lisi2",36);

        }
}
作者: 透过生活    时间: 2014-3-11 15:51
这里是this的用法。代表调用上一个构造方法参数为(name),对name进行赋值
1、表示对当前对象的引用!

2、表示用类的成员变量,而非函数参数,注意在函数参数和成员变量同名是进行区分!其实这是第一种用法的特例,比较常用,所以那出来强调一下。

3、用于在构造方法中引用满足指定参数类型的构造器(其实也就是构造方法)。但是这里必须非常注意:只能引用一个构造方法且必须位于开始!

还有就是注意:this不能用在static方法中!所以甚至有人给static方法的定义就是:没有this的方法!虽然夸张,但是却充分说明this不能在static方法中使用!





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