this/呼叫本類屬性(this表示當前屬性)
阿新 • • 發佈:2019-02-08
重點:只要在類的方法中訪問類中的屬性,那麼屬性前一定要追加“this”關鍵字的形式
從this的實際使用來講可以做三件事
1.呼叫本類屬性
2.呼叫本類方法(基本、構造)
3.表示當前物件(相對概念)
使用this表示本類屬性
範例:觀察如下程式碼
class Person{ private String name; private int age; public Peron(){} public Person(String n,int a) { name=n; age=a; } public void setName(String n) { this.name=n; } public void setAge(int a) { this.age=a; } public String getNmae() { return name; } public int getAge() { return age; } public String getInfo() { return "姓名: "+name+" 年齡:"+age; } } public class StringDemo { public static void main(String args[]) { System.out.println(new Person("張三",20).getInfo()); } }
結果為 姓名: 張三 年齡:20
因為當前構造方法的核心目的在於:為類中的name和age兩個屬性進行初始化 但是如果構造方法的引數宣告不準確(不清晰),所以最好的做法就是將引數名稱與屬性名稱統一起來,可是一旦統一起來就如下
public Person(String name,int age) {
name=name;
age=age;
}
結果 姓名: null 年齡:0
★原本想法是把Person類構造方法中的name賦值給類中封裝中的name,age類同
可是 Person類構造方法中的引數name是定義在 “{}”之中的 機器會遵循就近原則
所以 “=”號左邊的物件name就不會找類中封裝的name而是選擇就近的引數name
為了解決這個問題我們可以在屬性前面使用this關鍵字來表示本類屬性
//this.+屬性,當前物件中的屬性
程式碼如下
只要在類的方法中訪問類中的屬性,那麼屬性前一定要追加“this”關鍵字的形式class Person{ private String name; private int age; public Person() {}; public Person(String name,int a) { this.name=name; this.age=age; } public void setName(String n) { this.name=n; } public void setAge(int a) { this.age=a; } public String getNmae() { return this.name; } public int getAge() { return this.age; } public String getInfo() { return "姓名: "+this.name+" 年齡:"+this.age; } } public class StringDemo { public static void main(String args[]) { System.out.println(new Person("張三",20).getInfo()); } }