【本節目标】
通過閱讀本節内容,能夠讓你初步了解到作用域的概念,了解this的多種用途,學會使用this進行類内屬性的通路。
this調用本類屬性
this可以算是Java中比較複雜的關鍵字,因為this的使用形式上決定了它的靈活性,在程式裡面,使用this可以實作以下三類結構的描述:
- 目前類中的屬性:this.屬性;
- 目前類中的方法(普通方法、構造方法):this()、this.方法名稱();
- 描述目前對象;
通過現在的分析可以發現,利用構造方法或者是setter方法都可以進行類中的屬性的指派,在進行指派的時候,之前采用的是如下的定義形式:
class Person{
private String name ;
private int age ;
public Person(String n ,int a){
name = n ;
age = a ;
}
public void tell(){
System.out.println(“姓名:”+ name + “、年齡:”+ age );
}
//setter、getter略
}
public class JavaDemo { //主類
public static void main(String args[]) {
Person per = new person(“王五” ,38) ;
per.tell() ;
}
}

圖一 執行結果一
但是我們在構造方法定義的過程中會發現有問題:
public Person(String n ,int a){
name = n ;
age = a ;
}
這個問題出現在參數名稱上,可以發現,此時構造方法中兩個參數的目的是為了類中的name或age屬性初始化,但是,現在卻發現此時的代碼n和a參數名稱不好。
public Person(String name ,int age){
name = name ;
age = age ;
}
圖二 執行結果二
如果說現在将構造方法中的參數名稱修改為name、age,則發現無法進行屬性的正确設定:
在Java程式之中“{}”是作為一個結構體的邊界符,那麼在程式裡面當進行變量(參數、屬性)使用的時候,都會以“{}”作為一個查找邊界,是以按照就近取用的原則,此時的構造方法并沒有能夠通路類中的屬性,是以此時為了明确的标記出類中的屬性與參數的差別,往往會在屬性前追加一個“this”,表示本類屬性。
class Person{
private String name ;
private int age ;
public Person(String name ,int age){
this.name = name ;
this.age = age ;
}
public void tell(){
System.out.println(“姓名:”+ this.name + “、年齡:”+ this.age );
}
//setter、getter略
}
public class JavaDemo { //主類
public static void main(String args[]) {
Person per = new person(“王五” ,38) ;
per.tell() ;
}
}
圖三 執行結果三
在以後的程式開發過程中,隻要是通路本類中屬性,請一定要加上“this”實作通路。
想學習更多的Java的課程嗎?從小白到大神,從入門到精通,更多精彩不容錯過!免費為您提供更多的學習資源。
本内容視訊來源于
阿裡雲大學 下一篇:揭開this的神秘面紗-方法篇 | 帶你學《Java面向對象程式設計》之八 更多Java面向對象程式設計文章檢視此處