JAVA——this 關鍵字
阿新 • • 發佈:2018-11-22
this關鍵字的介紹
(一)this呼叫本類屬性
· 通過this關鍵字可以明確的去訪問一個類的成員變數,解決與區域性變數名稱衝突問題。
舉例如下:
class Person2{
//方法
private String name;
//構造方法
//引數名(即區域性變數)與屬性名(即成員變數名)相同,
//為了加以區分,屬性名前加 this,用於訪問屬性變數
public Person2(String name){
this.name = name;
}
public String getName(){
return name;
}
}
(二)this關鍵字呼叫本類方法
· this呼叫本類方法時的兩種情況
1.呼叫普通方法:this.方法名稱(引數)——可省略——最好不省略
2.呼叫構造方法:this(引數)
(1)this在本類中呼叫普通方法
this.方法名稱(引數)——可省略——最好不省略
舉例如下:
class Person2{
//方法
private String name;
//構造方法
//引數名(即區域性變數)與屬性名(即成員變數名)相同,
//為了加以區分,屬性名前加 this,用於訪問屬性變數
public Person2(String name){
this.name = name;
}
public String getName (){
return name;
//此處呼叫普通方法,但是一定要在本類中
this.print();
}
//普通方法
public void print(){
System.out.prinbtln("##33##");
}
}
(2)this關鍵字在本類中呼叫構造方法
1. this呼叫構造方法的語句必須在構造方法首行,且只能出現一次;
2. 使用this呼叫構造方法時,請留有出口 ;
3. 只能在構造方法中使用this呼叫構造方法,不能在普通方法中呼叫;
· 形式:this.(引數)
舉例如下:
class Person2{
//方法——private封裝
private String name;
private int age;
//構造方法
public Person2(){
}
public Person2(String name){
this();//呼叫本類無參構造方法
this.name = name;
}
public Person2(String name,int age){
this(name);//呼叫本類有參構造方法
this.age = age;
}
//方法setter設定 和 getter獲取
public void setName(String name){
this.name = name;//訪問成員變數
}
public String getName(){
return name;
}
public void setAge(int age){
if(age < 0 || age >= 150){
System.out.println("輸入錯誤!");
}
else{
this.age = age;//訪問成員變數
}
}
public int getAge(){
return age;
}
//方法
public void intriduce(){
System.out.println("姓名:"+name+",年齡:"+age);
}
}
public class Test3{
public static void main(String[] args){
Person2 sg1 = new Person2("kelly",21);
Person2 sg2 = new Person2("張三");
sg1.intriduce();
sg2.intriduce();
}
}
執行結果如下:
(三)this關鍵字表示當前物件
· 只要物件呼叫了本類中的方法,這個this就表示當前執行的物件 。
class Person2{
public void print(){
System.out.println("輸出:"+this);
}
}
public class Test3{
public static void main(String[] args){
Person2 sg1 = new Person2();
System.out.println(sg1);
sg1.print();//物件呼叫本類中的方法,則方法中的this就表示當前執行的物件sg1
System.out.println("————————————");
Person2 sg2 = new Person2();//物件呼叫本類中的方法,則方法中的this就表示當前執行的物件sg2
System.out.println(sg2);
sg2.print();
}
}
執行結果如下: