经常看到一些程序里会出现如这样的语句
如:this.costs=costs;
问:两个costs的区别?
请这方面学的好的高手们给出点通俗易懂的解释啊……
感谢ING……

解决方案 »

  1.   

    class MyDate{ 
    private int day; 
    private int month; 
    private int year; //定义三个成员变量; public MyDate(int day,int month,int year){ 
    this.day=day; //date,month,year都是传入的参数,而this.date是指在调用构造方法时对本类的对象的属性初始化
    //this.i 就代表了当前类(Test)的属性i
    this.month=month; this.year=year; 
    } //构造方法; public MyDate(MyDate date){ 
    this.day=date.day; 
    this.month=date.month; 
    this.year=date.year; //将参数Date类中的成员变量赋给MyDate类,这里可能更好理解一点,这里就看清楚了,参数是MyDate类型的date对象了

    }
    这段代码有助于楼主理解
      

  2.   

    先问一下public MyDate(int day,int month,int year){ 
    this.day=day; //date,month,year都是传入的参数,而this.date是指在调用构造方法时对本类的对象的属性初始化
    //this.i 就代表了当前类(Test)的属性i
    this.month=month; this.year=year; 
    } //构造方法; 
    其中this.day=day中的第一个day指的哪个?是public MyDate(int day,int month,int year)中的day吗?
      

  3.   

    就近原则吧,先匹配最近的{}内声明的变量,然后一层层向外this.day是this指针
      

  4.   

    this.day是类定义里的private int day; 
      

  5.   

    说的简单一点this.costs是指当前类中定义的costs 比如当前的类为:a,那么this.costs就表示在a类中定义的costs
    而后面的costs表示外面传进来的参数
    所以this.costs=costs表示外面传进的变量costs的值赋给当前这个类中的costs
      

  6.   

    第一个day就是你这个类实例化时,本身对象的属性,
    第二个day是你传入的参数public MyDate(int day,int month,int year)中的day
      

  7.   


    public class Test{
      private int costs;
      public void setCosts(int consts){
        this.costs = costs;
      }
    }一般是上面的这样
    其实就等同于public class Test{
      private int costs;
      public void setCosts(int constsParam){
        this.costs = constsParam;
      }
    }这样你就可以清楚的看出来2个consts的区别了
    其实this.costs这个costs是类的属性
    等号后面的costs是方法接收的参数this表示当前实例
      

  8.   

    说白了,“变量(属性)”重名问题
    你把传入的参数day换成d,就不用this.day了,直接day=d;没问题,因为名字唯一,那么day就是类的属性,d是方法的参数变量
    但是为了变量的见名知意,所以他把参数也写成day,那你就必须得用什么方法来区分同名的属性和参数,所以必须用this.day代表属性,否则day=day;没有意义都是参数
      

  9.   

    收益匪浅,
    我也有一个this用法的疑问:
    类继承了一个事件,在添加事件监视器时遇到 
    addActionlistener(this);
    this指的是当前类吗?
      

  10.   


    this.day是指类的属性day,第二个day是指传来的参数
      

  11.   

    我也是this有疑惑,现在明白了!thanks!
      

  12.   

    看了这么多现在感觉清楚多了…觉得你这个this类指的应该就是当前类,一理通万理通嘛嘿
      

  13.   

    发现一个问题,你不是特别仔细,做一个优秀的程序员这样是不对滴嘿嘿…
    public class Test{
      private int costs;
      public void setCosts(int consts){
        this.costs = costs;
      }
    }
    这里的  public void setCosts(int consts)这句中应该改为
      public void setCosts(int costs)
    或者把    this.costs = costs;改成    this.costs = consts;
    不过你的解答非常容易理解,谢谢^_^
      

  14.   

    谢谢,看来基础还是要多看些
    那个“=”如果我没记错的话应该是赋值的意思吧?
    就像this.day=day就是把传入的参数day赋值给当前类中定义的那个变量day
    对不?