黑马程序员技术交流社区

标题: 关于this()方法的问题. [打印本页]

作者: 朱元强    时间: 2011-9-27 07:22
标题: 关于this()方法的问题.
class Demo
{
   String name, address;
   int age;
public Demo(String n)
  {
     name=n;
  }
    public Demo (String n, int a)  
    {
       name = n;
       age=a;
    }
   public Demo (String n,String str,int a)
    {
       this(name,age);
       address= ar;
    }
}

  为什么此处用this  会报错??
作者: 匿名    时间: 2011-9-27 07:38
同学,虽然大家懂不容易,为了进黑马
但是这个也太那个了吧,这都啥呀
   public Demo (String n,String str,int a)
    {
       this(n,a);
       address= str;
    } 还差不多
构造函数,里使用构造函数时是不可以用自己的成员变量的
   public test2 (String n,String str,int a)
    {
       this(this.name,this.age);
       address= ar;
    } 不成这样了么 ,而且您还写错了
作者: 匿名    时间: 2011-9-27 09:59
class Demo
{
   String name, address;
   int age;
public Demo(String n)
  {
     name=n;
  }
    public Demo (String n, int a)   
    {
       name = n;
       age=a;
    }
   public Demo (String n,String str,int a)
    {
       this(n,a);  //这个地方是调用的public Demo (String n, int a)   构造函数
       address= str;
    }
}
哥们,我觉得你应该是想这样写的
作者: 匿名    时间: 2011-9-28 00:29
这样写我觉得没有什么意义?
但是就为什么会报编译错误,我有自己的看法
public Demo (String n,String str,int a)
    {
       this(name,age);
       address= ar;
    }
因为当你使用上面的构造方法创建实例的时候,但是此时还没有创建成功,你就要用一个非静态的成员变量name和age ,非静态的成员变量只能对象采能用,所以为了不报错,把name和age改成static就可以了
作者: 匿名    时间: 2011-9-28 08:59
理解this指向的是本类,它能调用本类的成员变量和方法 。
作者: 匿名    时间: 2011-9-28 15:35
标题: this的使用
class Demo
{
   String name, address;
   int age;
public Demo(String n)
  {
     name=n;
  }
    public Demo (String n, int a)   
    {
       name = n;
       age=a;
    }
   public Demo (String n,String str,int a)
    {
         }
}
它这里代码 写的让我看的很别扭!this代表的是本类对象的应用,  this(name,age);
       address= ar; 为什么这句话会报错!第一点 name  age字符串是哪来的
上面定义了3个重载的构造函数! 这不是数学 有替代的作用!
你都没应用这个字符串 怎么会用呢

使用this还有一点  这是我在学android中遇到的问题  当在一个类中定义了匿名内部类的时候使用this的问题
!特别是在匿名内部类方法中使用this是错的  因为它代表的是外部类
作者: 匿名    时间: 2011-9-29 15:56
public Demo (String n,String str,int a)
    {
       this(name,age);
       address= ar;
    }


public Demo (String n, int a)   
    {
       name = n;
       age=a;
    }
你的本意是想在构造函数public Demo (String n,String str,int a) 中调用构造函数public Demo (String n, int a)   但是public Demo (String n,String str,int a) 中没有参数name和age.
你可以把 public Demo (String n,String str,int a)
    {
       this(name,age);
       address= ar;
    }
改成 public Demo (String n,String str,int a)
    {
       this(n,a);
       address= ar;
    }
这样就可以了




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