黑马程序员技术交流社区

标题: 求this 关键字在构造函数之间调用实例 [打印本页]

作者: 孙宁洋    时间: 2013-6-7 10:23
标题: 求this 关键字在构造函数之间调用实例
求this 关键字在构造函数之间调用实例
作者: 杜光    时间: 2013-6-7 11:03
本帖最后由 杜光 于 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. }
复制代码

作者: sweethui1    时间: 2013-6-7 16:03
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;
               
        }
       
}
作者: 夜默    时间: 2013-6-10 10:53
楼主你好  如果帖子的问题已经解决,请把帖子的类型改为“已解决”。

作者: 月时微    时间: 2013-6-18 13:20
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);
}
}

作者: shang1jk    时间: 2013-6-18 13:48
视频里讲过, 很简单, 看下代码就能明白了.
  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. }
复制代码

作者: 孙百鑫    时间: 2013-6-22 02:03
楼主您好~帖子长时间未作出回答,我已经将您的帖子改成已解决。如果有问题的话可以私密我哦~




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