为什么要有this引用
我们来看个例子
public class Date {
public int year;
public int month;
public int day;
public void setDay(int y,int m,int d) {
year = y;
month = m;
day = d;
}
public void printDate() {
System.out.println(year+"年 "+month+"月 "+day+"日");
}
public static void main(String[] args) {
//实例化三个对象
Date date1 = new Date();
Date date2 = new Date();
Date date3 = new Date();
//设置三个对象的日期
date1.setDay(2003,06,16);
date2.setDay(2003,07,27);
date3.setDay(2024,07,17);
//打印日期中的内容
date1.printDate();
date2.printDate();
date3.printDate();
}
}
输出结果:
以上代码逻辑简单没有任何问题。但是如果你不小心把成员方法中的形参名和成员变量名写成一样的,会出现什么结果呢
public void setDay(int year,int month,int day) {
year = year;
month = month;
day = day;
}
输出结果:
到底是谁给谁赋值,我们的本意是当date1调用setDay时给date1赋值,date1调用printDay时打印date1的日期。要解决上述情况,我们就要用到this。
this引用怎么用
public void setDay(int year,int month,int day) {
this.year = year;
this.month = month;
this.day = day;
}
输出结果:
this引用指向当前对象,当date1调用setDay方法时,date1就是this,当date2调用setDay方法时,date2就是this,当date3调用setDay方法时,date3就是this
this引用的特性
this只能在成员方法中使用,在成员方法中,this只能引用当前对象
this的使用方法不止一种,这里我们暂时介绍一种,其他使用你还要学习其他知识之后才会学到。
http://t.csdnimg.cn/Qrb0c this引用的其他两种方法在这个链接里。