面向对象-this关键字的概述和应用
1 /*
2 我们曾经说过:定义名字要做到见名知意。
3
4 this:是当前类的对象引用。简单的记,它就代表当前类的一个对象。
5
6 注意:谁调用这个方法,在该方法内部的this就代表谁。
7
8 this的场景:
9 解决局部变量隐藏成员变量
10 */
11 //定义学生类
12 class Student {
13 //姓名
14 private String name;
15 //年龄
16 private int age;
17
18 //姓名获取值
19 public String getName() {
20 return name;
21 }
22
23 //姓名设置值
24 public void setName(String name) { //String name = "林青霞";
25 //name = name; //zhou:想把林青霞赋值给外面的name,但是变量的使用规则是就近的原则,所以林青霞还是去找最近的参数String name,
26 //把自己赋给了自己,和外面的private String name没有关系,这叫局部变量隐藏成员变量
27 //如果可以的话通过Student.name = name就可以,要用静态修饰(private static String name)
28
29 //刘意:变量的使用规则:就近原则
30 //这里是类名,目前还没有说过类似的用法,所以这个是有问题的
31 //这里的调用只能通过对象名
32 //这个对象如果存在,它应该代表的是Student的一个对象。
33 //那么,谁能够代表当前类的对象呢? java就提供了一个关键字 this
34 //Student.name = name;
35
36 this.name = name;
37 }
38
39 //年龄获取值
40 public int getAge() {
41 return age;
42 }
43
44 //年龄赋值
45 public void setAge(int age) {
46 this.age = age;
47 }
48 }
49
50 //测试类
51 class StudentTest {
52 public static void main(String[] args) {
53 //创建学生对象
54 Student s = new Student();
55
56 //给成员变量赋值
57 s.setName("林青霞");
58 s.setAge(27);
59 //获取数据
60 System.out.println(s.getName()+"---"+s.getAge());
61 }
62 }
若把成员变量定义成静态(把main方法放在主类中方便在Eclipse使用Run As——>Java Application):
1 package cn.itcast;
2
3 public class Student {
4 //姓名
5 private static String name;
6 //年龄
7 private int age;
8
9 public static String getName() {
10 return name;
11 }
12
13 public static void setName(String name) {
14 Student.name = name;
15 }
16
17 public int getAge() {
18 return age;
19 }
20
21 public void setAge(int age) {
22 this.age = age;
23 }
24
25
26 public static void main(String[] args) {
27 // 创建学生对象
28 Student s = new Student();
29
30 // 给成员变量赋值
31 s.setName("林青霞");
32 // 推荐用类名调用
33 Student.setName("林青霞");
34 s.setAge(27);
35 // 获取数据
36 System.out.println(s.getName() + "---" + s.getAge());
37 System.out.println(Student.getName() + "---" + s.getAge());
38 }
39
40 }
41
42 // 测试类
43 class StudentTest {
44
45 }
测试也是OK的: