1. 程式人生 > >this keyword details

this keyword details

安全 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