1. 程式人生 > >this/呼叫本類屬性(this表示當前屬性)

this/呼叫本類屬性(this表示當前屬性)

重點:只要在類的方法中訪問類中的屬性,那麼屬性前一定要追加“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.+屬性,當前物件中的屬性

程式碼如下

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());
}
}	
只要在類的方法中訪問類中的屬性,那麼屬性前一定要追加“this”關鍵字的形式