Java中this關鍵字與super關鍵字

this關鍵字的作用

1、調用本類屬性

//明確表示調用類中同名屬性,在Java類的普通方法中訪問本類屬性,一定要加this關鍵字
this.屬性名;

例子:

public class Test {
	private String scope = "類的字段";
    public String getResult() {
        String scope = "局部變量";
        // this.scope = "類的字段"  scope = "局部變量"
        return this.scope + "-" + scope;
    }
}

2、調用本類方法

this.方法名稱(參數);//調用普通方法
this(參數);//調用構造方法

例子:

class Parent {
    private String name;
    int num = 4;
    void show() {
        System.out.println("父類show方法被調用");
    }
    void show2() {
        this.show();//調用普通方法
        System.out.println("show2方法");
    }
    public Parent(String name) {
        this.name = name;
    }
    public Parent(String name, int num) {
        this(name);//調用構造方法
        this.num = num;
    }
}

3、表示當前對象(區分成員變量與方法形參)

this.成員變量名

例子:

class Parent {
    private String name;
    public Parent(String name) {//正確寫法
        this.name = name;
    }
//    public Parent(String name) {//錯誤寫法
//        name = name;//當一個方法的形參與成員變量的名字相同時,就會覆蓋成員變量
//    }
}

super關鍵字的作用

1、調用父類屬性

super.屬性名

例子:

class Parent {
    int num = 4;
}
class Son extends Parent {
    private int sum = super.num;//調用父類屬性
}

2、調用父類中的同名方法

super.方法名稱(參數列表)

例子:

class Parent {
    int num = 4;
    void show() {
        System.out.println("父類show方法被調用");
    }
}
class Son extends Parent {
    private int num = 5;
    void show(){
        super.show();//調用父類中的同名方法
        System.out.println("num="+super.num);
    }
}

3、調用父類構造器

super();

例子:

class Parent {
    public Parent(){
        System.out.println("父類構造器被調用");
    }
}
class Son extends Parent {
    public Son(){
        super();//調用父類構造器
        System.out.println("子類構造器被調用");
    }
}

this關鍵字與super關鍵字區別

序號 類型 this super
1 訪問屬性 訪問本類中屬性,如果本類中沒有此屬性,就從父類繼承過來的屬性中查找(遵循就近原則) 訪問父類中的屬性
2 調用方法 訪問本類中方法 直接訪問父類中方法
3 調用構造器 調用本類構造器,必須放在第一行 調用父類構造器,必須放在第一行,如果不寫的話,系統會默認調用父類的無參構造器(總之創建子類對象一定會執行父類構造器)
4 特殊用法 表示當前對象,有時可以return this; 不能表示父類對象
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章