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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 钟伟杰 中级黑马   /  2013-4-16 14:56  /  1671 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 钟伟杰 于 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在构造函数间的调用不是很明白,以上面的代码为例请教一下。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

5 个回复

倒序浏览
Java关键字this只能用于方法方法体内。当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是 this。因此,this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this,这在“Java关键字static、final 使用总结”一文中给出了明确解释。并且this只和特定的对象关联,而不和类关联,同一个类的不同对象有不同的this。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
this的应用:当定义类中功能时,该函数内部要用到调用该函数的对象时,这时用this来表示这个对象。但凡本类功能内部使用了本类对象,都用this表示。
This代表它所在函数所属对象的引用。
简单说:哪个对象在调用 this所在的函数,this就代表哪个对象。
回复 使用道具 举报
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区分开来
       }
}
回复 使用道具 举报
  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. */
复制代码
回复 使用道具 举报
this关键字在构造函数中的使用:this.name = name;中this是指它所在函数所属对象的引用
this();代表没有参数的构造函数,默认存在,必须在构造函数的第一行;
this(name);代表有参数的构造函数,是自己定义的,必须在构造函数的第一行;
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马