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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 黑马-王鹏 于 2013-3-13 22:42 编辑
  1. /*
  2. this语句 :用于构造函数之间进行互相调用。

  3. this语句只能定义在构造函数的第一行。因为初始化要先执行。
  4. */

  5. class Person
  6. {
  7. private String name;
  8. private int age;

  9. {

  10. System.out.println("code run");
  11. }

  12. Person()
  13. {
  14. //this("hah");
  15. System.out.println("person run");
  16. }
  17. Person(String name)
  18. {
  19. //this();
  20. this.name =name;
  21. }
  22. Person(String name,int age)
  23. {
  24. //<FONT color=red>this(name);
  25. </FONT>//this.name = name;
  26. this.age = age;

  27. }

  28. }

  29. class PersonDemo4
  30. {
  31. public static void main(String[] args)
  32. {
  33. new Person();
  34. //Person p = new Person("lisi",30);
  35. //Person p1 = new Person("lisi2",36);

  36. }
  37. }
复制代码
求解,this在构造函数间的调用过程是怎么一个过程,毕老师把我讲晕了,你能让我清醒一点吗?

7 个回复

倒序浏览
我不得不说,你写的代码看的让我头疼!注意一下格式好不!你的代码我是看不了了,但能给你总结下!
this指代本类对象,它是用来区分局部变量与成员变量的。
this出现在构造方法中, 代表是当前构造正在创建的对象。
this出现在成员方法. 代表是调用这个方法的对象
回复 使用道具 举报
黑马-郑玉元 发表于 2013-3-13 19:02
我不得不说,你写的代码看的让我头疼!注意一下格式好不!你的代码我是看不了了,但能给你总结下!
this指 ...

我的代码是毕老师视频里的,我想了解下this的在函数中的调用过程
回复 使用道具 举报
本帖最后由 黑马-郑玉元 于 2013-3-13 19:36 编辑
黑马-王鹏 发表于 2013-3-13 19:07
我的代码是毕老师视频里的,我想了解下this的在函数中的调用过程

虽然是视频里面的,但放到上面还是要便于人们阅读才好;
this指的就是你当前传哪个对象,就是哪个对象执行,你稍等,我给你找段代码!
class Demo02
{
    public static void main(String[] args)
    {
        Demo00 d = new Demo00();
        d.id=10;
        d.show();
        System.out.println(d.id);      
    }
}
class Demo00
{
    int id=0;
    void show(){
        id=100;//默认有个this,相当于this.id=100;
        System.out.println(id);
    }
}

回复 使用道具 举报
给你大致总结下this的用法:
this关键字除了在构造函数中调用其他构造函数以外,还可以当做一个引用使用。其用于方法中,哪个对象调用该方法,this就引用哪个对象。
方法中局部变量和成员变量重名,我们想调用成员变量时就可以使用this.变量名形式访问成员变量。
在方法中要将调用该方法的对象作为参数传递给另一个方法时,可以将this作为实参传给该方法。
在内部类中访问外部类的成员时,需要使用外部类名.this.成员名形式访问。
回复 使用道具 举报
  1. /*
  2. this语句 :用于构造函数之间进行互相调用。
  3. this语句只能定义在构造函数的第一行。因为初始化要先执行。
  4. */
  5. class Person
  6. {
  7. private String name;
  8. private int age;
  9. {
  10. System.out.println("code run");
  11. }
  12. Person()
  13. {
  14. System.out.println("person run");
  15. }
  16. Person(String name)
  17. {
  18. this();//这里的this()调用的是上面的构造函数Person()
  19. this.name =name;
  20. }
  21. Person(String name,int age)
  22. {
  23. this(name);//这里的this(name)调用的是上面的构造函数Person(String name)
  24. this.name = name;
  25. this.age = age;
  26. }
  27. }
  28. class PersonDemo4
  29. {
  30. public static void main(String[] args)
  31. {
  32. new Person();
  33. //Person p = new Person("lisi",30);
  34. //Person p1 = new Person("lisi2",36);
  35. }
  36. }
复制代码
帮你把代码整理了下,注释中写明了this在构造函数中的调用过程。
如果this不是在构造函数的第一行,输出结果会出错。
  1. Person(String name,int age)
  2. {
  3. this.name = name;
  4. this.age = age;
  5. this("haha");
  6. }
复制代码
像上面的代码,无论你输入的name是什么,输出的name都是haha。

评分

参与人数 1技术分 +1 收起 理由
洪建超 + 1

查看全部评分

回复 使用道具 举报
this就是指该功能中所传入的当前对象,通俗的举个例子:
有一个可以做各种甜点的烤箱,他的一个功能就是烘烤,
它有一个小入口,你放入什么就会对应的烤出什么。
在你没放入东西之前,这个烘烤的功能就已经定义好了,但是具体放什么东东不确定
所以this. 烘烤中的this就是指具体你所放入的东东,
你只要记住,this是指调用这个函数的那个具体对象就好了
回复 使用道具 举报
大家都说的很好,我的理解就是:看this在哪里出现。
构造方法里,调用this(),就是调用无参数的构造方法。
方法里面调用this(),就代表this.   代表当前,最近的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马