黑马程序员技术交流社区

标题: 关于this在构造函数中的调用问题 [打印本页]

作者: 钟伟杰    时间: 2013-4-16 14:56
标题: 关于this在构造函数中的调用问题
本帖最后由 钟伟杰 于 2013-4-16 18:50 编辑

class Person
{
      private String name;
       private int age;
              
       Person()
       {
              System.out.println("person run");
       }
       Person(String name)
       {
              this();
              this.name =name;
       }
       Person(String name,int age)
       {
              this(name);
              this.age = age;
       }
}

关于this在构造函数间的调用不是很明白,以上面的代码为例请教一下。

作者: 心弦上的景致    时间: 2013-4-16 15:09
Java关键字this只能用于方法方法体内。当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是 this。因此,this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this,这在“Java关键字static、final 使用总结”一文中给出了明确解释。并且this只和特定的对象关联,而不和类关联,同一个类的不同对象有不同的this。
作者: 艾萱    时间: 2013-4-16 15:32
this的应用:当定义类中功能时,该函数内部要用到调用该函数的对象时,这时用this来表示这个对象。但凡本类功能内部使用了本类对象,都用this表示。
This代表它所在函数所属对象的引用。
简单说:哪个对象在调用 this所在的函数,this就代表哪个对象。

作者: 。。。。。。    时间: 2013-4-16 15:41
class Person
{
      private String name;
       private int age;
              
       Person()
       {
              System.out.println("person run");
       }
       Person(String name)
       {
             this();//这个this是调用的是Person()这个无参数的结构函数
              this.name =name;//这个this代表是本对象的name,与无参数中的name区分开来。
       }
       Person(String name,int age)
       {
             this(name);//这个this是调用的是Person(name),这个带参数String name的结构函数
              this.age = age; //这个this代表是本对象的age,与无参数中的age区分开来
       }
}

作者: 朱德帅    时间: 2013-4-16 16:39
  1. class Person
  2. {
  3.       private String name;
  4.        private int age;
  5.               
  6.        Person()
  7.        {
  8.               System.out.println("person run");
  9.        }
  10.        Person(String name)
  11.        {
  12.                            //这个就是调用本方法所属的类的不带参的构造方法。
  13.               this();
  14.                           //这个同理,就是本方法所属类的属性name等于传进来的参数name
  15.               this.name =name;
  16.        }
  17.        Person(String name,int age)
  18.        {       
  19.                           //同理,调用本方法所属类的带String类型的构造方法,传入参数值为name
  20.               this(name);
  21.                           //同理,调用本方法所属类的属性age等于传进来的参数age
  22.               this.age = age;
  23.        }
  24. }
  25. /*
  26.         总结:就是一个层层调用的关系,带一个参数的构造方法先调用无参构造方法,带两个参数的
  27.         构造方法又调用了带一个参数的构造方法。总之,调用无参构造方法就运行了一个,调用一个
  28.         参数的构造方法就运行两个,调用两个参数的构造方法就全部运行了!
  29. */
复制代码

作者: 庄生晓梦    时间: 2013-4-16 18:58
this关键字在构造函数中的使用:this.name = name;中this是指它所在函数所属对象的引用
this();代表没有参数的构造函数,默认存在,必须在构造函数的第一行;
this(name);代表有参数的构造函数,是自己定义的,必须在构造函数的第一行;




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