1. 程式人生 > >JAVA初級(八)物件之this關鍵字

JAVA初級(八)物件之this關鍵字

這節介紹物件的this關鍵字

this關鍵字是什麼?

this表示當前這個物件.你在哪個類裡面寫this就代表哪個物件
有這麼一段程式碼

public class Student{
    private String name="張三";
    public void testThis(String name){
        System.out.println(this.name);//表示當前物件
        System.out.println(name);
    }
}

然後執行

public static void main(String[] args) {
        Student student = new Student();
        student.testThis("李四");
    }
結果輸出:
張三
李四

觀察程式碼,你發現引數的name和定義的name是不是名稱一樣.這樣我要如何區分?用this,
this,name就代表Student定義的成員變數
name表示我呼叫方法時傳入的引數.

強調this表示當前這個物件,也就是類的引用。
即this.name 並不是Student.name,
而是Student student = new Student()
這個的

student.name

到這應該就能知道this的一點意思--------代表當前物件.

那麼this一般怎麼用?

1,呼叫一個方法傳入的引數和成員變數同名並且要同時使用時。用this
–>這樣才能區分你用的是哪個變數

例子在上面已經有了
2,呼叫自身的其它方法

public class Student{
    private String name="張三";
    public void testThis(){
     	this.testThis1();//this呼叫另一個方法
    }
 public void testThis1(){
        System.out.println("另一個方法");      
    }
}

不過這沒什麼卵用.這個this大多數情況可以省略。
偶爾使用到內部類,然後內外部有相同方法名的時候會用到.

3,呼叫另一個構造方法

public  class Student {
    private String name="張三";
    public Student (){
        this("李四");
        System.out.println(this.name);
    }
    public Student (String name){
        System.out.println(name);
    }
}

直接this() 根據括號內參數來選擇構造方法
this()必須放在第一行且只能在構造方法中用.否則報錯.

4,引用自身

public  class Student extends Human{
    private String name = "李四";
    private void getName(Student student){
        System.out.println(student.name);
    }
    public void getName(){
        getName(this);
    }
}

然後這樣執行

public static void main(String[] args) {
        Student st = new Student();
        st.getName();
    }
結果輸出:李四

這樣getName()方法用this這個自身引用傳入帶引數的getName(this)中執行方法

當然你把帶引數的getName的private改成Public然後st.getName(st);
也是一樣的效果.當然有時候不這樣寫偏要這樣多一層是有原因的。

這樣多一層有時候就更安全.而且容易修改。
~這有一點代理的意思…你給我一家店,我幫你代理看店.但是店要怎麼裝修賣什麼你自己看著辦,