面向对象this关键字和概述和应用

面向对象this关键字和概述和应用

 1 package thisdemo;
 2 
 3 /**
 4  * 面向对象this关键字和概述和应用
 5  *
 6  */
 7 
 8 //定义老师类
 9 class Teacher {
10     private String name;
11     private int age;
12 
13     //设置姓名值
14     public void setName(String n){
15         name = n;
16     }
17 
18     //获取姓名值
19     public String getName(){
20         return name;
21     }
22 
23     public void setAge(int a){
24         age = a;
25     }
26 
27     public int getAge(){
28         return age;
29     }
30 
31 }
32 
33 class Test{
34     public static void main(String[] args){
35         Teacher t = new Teacher();
36         //给成员变量赋值
37         t.setName("张三");
38         t.setAge(23);
39         //获取成员变量的值
40         System.out.println(t.getName() + "---" + t.getAge());
41     }
42 }

输出结果:

张三---23

修改以上案例,我们知道,给变量取名字讲究见名知意,但是对于public void setName(String n)和public void setAge(int a)中的参数a和n就没有做到见名知意,所以修改代码如下:

1 public void setName(String name){
2         name = name;
3 }
4 
5 public void setAge(int age){
6     age = age;
7 }     

输出:

 1 null---0 

分析案例2的结果:

因为变量的使用遵循就近原则,所以name = name; 左边对应的是形式参数的name,右边对应的也是形式参数的name,这里的意思是将自己赋值给了自己,无意义。而此时,成员变量name和age中存储的还是默认值null和0

我们想使用的是:Student类.name = name;Java就为我们提供了一个关键字this,this代表当前类的对象引用,也就是代表当前类的一个对象

案例三:

1 public void setName(String name){
2         this.name = name; 
3     }
4     public void setAge(int age){
5         this.age = age; 
6     }

输出:

 1 张三---23 

需要注意的是:

1. 方法被哪个对象调用,this就代表哪个对象

2. 什么时候使用this呢?

  解决局部变量隐藏成员变量的问题


原文地址:https://www.cnblogs.com/happy520/p/6696930.html