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; | 不能表示父類對象 |