this keyword details
阿新 • • 發佈:2018-10-04
安全 style word args 數據 main 成員變量 什麽 color
學生類: package com.itheima_07; /* * 學生類 * * 起名字我們要求做到見名知意。 * 而我們現在的代碼中的n和a就沒有做到見名知意,所以我要改進。 * * 如果有局部變量名和成員變量名相同,在局部使用的時候,采用的是就近的原則。 * * 我們有沒有辦法把局部變量的name賦值給成員變量的name呢? * 有。 * * 什麽辦法呢? * 用this關鍵字就可以解決這個問題 * * this:代表所在類的對象引用 * 方法被哪個對象調用,this就代表那個對象 * * 使用場景: * 局部變量隱藏成員變量*/ public class Student { private String name; private int age; public void setName(String name) { //"林青霞" //name = name; this.name = name; } public String getName() { return name; } public void setAge(int age) { //age = age; this.age = age; } public int getAge() { return age; } }
package com.itheima_07; /* * 學生類的測試類 */ public class StudentDemo { public static void main(String[] args) { //創建對象 Student s = new Student(); System.out.println(s.getName()+"---"+s.getAge()); s.setName("林青霞"); s.setAge(28); System.out.println(s.getName()+"---"+s.getAge()); } }
首先setXxx和getXxx方法是為了數據的安全性,其次為了讓名字做到見名知意,將a改成了age,n改成了name。輸出結果相當於沒有對name或者age賦值,這是因為在setName()和setAge()中的name和age都是局部變量,而不是讓局部變量的值賦值給了這個類的成員變量,所以為了解決這個問題這裏引入了this關鍵字就徹底解決了這個問題。this..name = name;因為this代表所在類的對象引用,所以this.name就是成員變量的name,而後面的name采用就近原則指的是局部變量的name。s來調用setName()方法,this就代表這個s。使用場景就是局部變量隱藏了成員變量。
this keyword details