在学生类里面定义了两个成员变量, 一个age , 一个name , 并且用private 进行修饰.
然后针对age 和 name 这两个成员变量对应的给出了get 和set 方法.
最后使用了一个show 方法, show 方法用于在控制台输出成员变量的值.
String n 中的n 是用来赋值给String name 中的name, 也就是String n 中的n 应该代表的是姓名name 的意思, 但是实际上它代表不了姓名.
所以在这里这个名字起的不好, 所以把它注释掉.起名字应该要见名知义.所以重新起个名字.
名字起好之后, 要把第14行中的name 赋值给 第7行的name .
这样就改好了.
然后回到学生测试类里面, 右键运行.
控制台的值是null, 说明没有赋值成功.
原因是第7行的name 是一个成员变量.
而第14行的name 是一个局部变量.
在方法中直接写name , 看到的只能是局部变量中的name , 也就是第15行的name 其实参照的都是第14行String name 中的name.所以想把局部变量赋值给成员变量没有成功.
现在使用this 关键字来修改代码之后, 控制台成功输出了, 说明赋值成功了.
原因是用this 来修饰name, 指代的就是成员变量name .
右边的name 没有用this 来修饰, 所以右边的name 是局部变量.
age 同理, 也改一下.
学生测试类(用于访问学生测试类):
在学生测试类的main 方法中, 首先创建了一个对象, 然后使用使用set 方法给成员变量赋值,最后调用show 方法调用成员变量的值.
总结:
形参与成员变量不同名的情况:
如果括号里是(String n), 内部代码是name = name.那么右边的name 就是成员变量, 不用写this 关键字.
getName 方法也是, 没有形参名字, 也就相当于方法的形参不与成员变量同名, 所以没有this 关键字来修饰, return name 中的name 也指的是成员变量.
使用this 的情况:当局部变量和成员变量同名的时候, 怕局部变量把成员变量的名字给隐藏了, 所以加上this 来修饰.
setName 方法被s1 调用, this 代表的就是s1.
setName 方法被s2 调用, this 代表的就是s2.