1. 程式人生 > 其它 >(this關鍵字)小總結---Java

(this關鍵字)小總結---Java

技術標籤:程式碼練習javajava

一、this表示當前物件引用,可以藉助this來訪問物件的欄位和方法,這裡的方法包括普通方法和構造方法。

1、通過this呼叫類中的屬性
(1)Person.java

public class Person {
    private String name;
    private int age;
    private String gender;

    public Person() {//預設建構函式
    //this呼叫類中的屬性
        this.name = "人物1";//構造時初始化
        this
.age = 20; this.gender ="女"; } public Person(String name, int age, String gender) {//形參的命名和屬性的命名一樣 //this呼叫類中的屬性 this.name = name; this.age = age; this.gender = gender; } public void show(){ System.out.println("name:"+this.
name+" age:"+this.age+" gender:"+this.gender); } }

(2) PersonTest.java

public class PersonTest {
    public static void main(String[] args) {
        Person P1=new Person();//呼叫無引數的建構函式
        Person P2=new Person("人物2",22,"男");//呼叫三個引數的建構函式

        P1.show
(); P2.show(); } }

(3) 執行結果
在這裡插入圖片描述
2、通過this呼叫類中的方法
(1)

public class Person {
    private String name;
    private int age;
    private String gender;

    public Person() {//預設建構函式
        this.name = "人物1";//構造時初始化
        this.age = 20;
        this.gender ="女";
    }

    public Person(String name, int age, String gender) {//形參的命名和屬性的命名一樣
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    public void study(){
        System.out.println(this.name+"正在學習,勿擾!");
    }

    public void show(){
        System.out.println("name:"+this.name+" age:"+this.age+" gender:"+this.gender);
        this.study();//在show方法中,通過this引用呼叫本類的study方法。//其實在這裡this可以省略
    }
}

(2)

public class PersonTest {
    public static void main(String[] args) {
        Person P1=new Person();//呼叫無引數的建構函式
        Person P2=new Person("人物2",22,"男");//呼叫三個引數的建構函式

        P1.show();
        P2.show();
    }
}

(3)執行結果
在這裡插入圖片描述
3、通過this呼叫自身的構造方法
(1)

public class Person {
    private String name;
    private int age;
    private String gender;

    public Person() {
        //this呼叫建構函式
        this("人物1",22,"女");//必須放在第一行顯示
        System.out.println("這是第二行");
        
    }

    public Person(String name, int age, String gender) {//形參的命名和屬性的命名一樣
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    public void show(){
        System.out.println("name:"+this.name+" age:"+this.age+" gender:"+this.gender);
    }
}

(2)

public class PersonTest {
    public static void main(String[] args) {
        Person P1=new Person();//呼叫無引數的建構函式
        Person P2=new Person("人物2",22,"男");//呼叫三個引數的建構函式

        P1.show();
        P2.show();
    }
}

(3)執行結果
在這裡插入圖片描述
二、注意
1、this代表的是當前物件的引用,而不是代表當前物件。
2、使用this呼叫構造方法時,只能在構造方法中使用,不能在普通方法中使用。
3、需要在一個構造方法中呼叫當前類的另一個構造方法時,通過this()的形式呼叫。必須放在第一行,且只能呼叫一個。
示例:

public class Person {
    private String name;
    private int age;
    private String gender;

    public Person() {
        //this呼叫建構函式
        this("人物1",22,"女");//必須放在第一行顯示
        //this("人物2",19); //編譯錯誤 因為當前類只能呼叫一個構造方法

    }

    public Person(String name, int age, String gender) {//形參的命名和屬性的命名一樣
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}