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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孙宁洋 中级黑马   /  2013-6-7 10:23  /  1955 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

求this 关键字在构造函数之间调用实例

6 个回复

倒序浏览
本帖最后由 杜光 于 2013-6-7 11:05 编辑

this
1、当全局变量跟局部变量重名时,表示使用全局变量(此时this指代本类对象)
例有一类
  1. class A
  2. {
  3.       String name;
  4.      void setName(String name)
  5.       {
  6.             this.name = name;
  7.       }
  8. }
复制代码
2、构造方法相互调用,此时this指代本类类名
注意this只能放在构造方法第一句
  1. class B
  2. {
  3.     String name;
  4.     B()
  5.         {
  6.        this("name");//会自动调用带String参数的构造方法
  7.     }

  8.     B(String name)
  9.         {
  10.         this.name = name;
  11.     }

  12. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
刘凯 + 1 赞一个!

查看全部评分

回复 使用道具 举报
this 用构造函数之间进行互相调用
this只能放在构造函数的第一行,因为初始化的动作应先执行。

例:
class person {
        String name;//成员变量,实例变量
        int age;
        person()
        {
                name="";
                age=0;
        }
       
        person(int age)
        {
                this.age=age;
                 
        }  
        person(String name,int age)
        {
               
                this(age);//这时没有必要再重写一次,可以用this()调用构造函数
                this.name=name;
               
        }
       
}

评分

参与人数 1技术分 +1 收起 理由
尹丽峰 + 1 很给力!

查看全部评分

回复 使用道具 举报
楼主你好  如果帖子的问题已经解决,请把帖子的类型改为“已解决”。
回复 使用道具 举报
class Super{
private int a;
protected Super(int a)
{
this.a=a;
}
}
class Sub extends Super
{
public Sub(int a)
{
super(a);
}
public Sub()
{
this(5);
}
}
回复 使用道具 举报
视频里讲过, 很简单, 看下代码就能明白了.
  1. public class Test {
  2.        
  3.         public Test()
  4.         {
  5.                 System.out.println("Test()");
  6.         }
  7.        
  8.         public Test(int x)
  9.         {
  10.                 this();                        //this语句要写在构造器的第一行.
  11.                 System.out.println("Test() " + x);
  12.         }
  13.        
  14.         public static void main(String[] args) {
  15.                
  16.                 new Test();
  17.                 System.out.println("===============");
  18.                 new Test(4);
  19.         }
  20.        
  21. }
复制代码
回复 使用道具 举报
楼主您好~帖子长时间未作出回答,我已经将您的帖子改成已解决。如果有问题的话可以私密我哦~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马