JAVA初級(八)物件之this關鍵字
阿新 • • 發佈:2018-12-15
這節介紹物件的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);
也是一樣的效果.當然有時候不這樣寫偏要這樣多一層是有原因的。
這樣多一層有時候就更安全.而且容易修改。
~這有一點代理的意思…你給我一家店,我幫你代理看店.但是店要怎麼裝修賣什麼你自己看著辦,