您的位置:首页 > 编程语言 > Java开发

java面向对象-this关键字

2017-06-20 13:19 309 查看
this关键字:

this代表所在类的一个对象引用。

下面以一个案例讲解,秒懂this关键字:
package day07;

public class StudentDemo1 {
//定义属性
private String name;
private int age;

//定义访问变量的方法
public String getName(){
return name;
}
public void setName(String name){
name=name;//由于变量使用原则,就近原则所以会把name赋值给本身的name
}
public int getAge(){
return age;
}
public void setAge(int age){
name=name;//由于变量使用原则,就近原则所以会把age赋值给本身的age
}
}
测试类:
package day07;

public class StudentMainDemo1 {

/**
* @param args
*/
public static void main(String[] args) {
StudentDemo1 sd = new StudentDemo1();
//对变量赋值
sd.setName("李华");
sd.setAge(13);
System.out.println(sd.getName()+"****"+sd.getAge());

}

}
打印输出:

null****0

问题来了:为什么结果是null和0
原因就在set方法给变量赋值的时候出现的错误。

public void setName(String name){
name=name;//由于变量使用原则,就近原则所以会把那么赋值给本身的name
}
public void setAge(int age){
name=name;//由于变量使用原则,就近原则所以会把那么赋值给本身的name
}


我们所要使用的是成员变量name,所以只能用该类的对象调用成员变量name,所以在java中给我们提供了能够代表当前类的

对象的一个关键字---this关键字。

所以以上代码就可以修改为
package day07;

public class StudentDemo1 {
//定义属性
private String name;
private int age;

//定义访问变量的方法
public String getName(){
return name;
}
public void setName(String name){
this.name=name;//this指代的是当前类Student的对象
}
public int getAge(){
return age;
}
public void setAge(int age){
this.name=name;////this指代的是当前类Student的对象
}
}
测试类不变:
package day07;

public class StudentMainDemo1 {

/**
* @param args
*/
public static void main(String[] args) {
StudentDemo1 sd = new StudentDemo1();
//对变量赋值
sd.setName("李华");
sd.setAge(13);
System.out.println(sd.getName()+"****"+sd.getAge());

}

}
输出:

李华****13

注意事项:

哪个对象调用这个方法,方法内部的this就代表那个对象。

使用场景:

局部变量隐藏成员变量的时候
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息