this、super關鍵字
阿新 • • 發佈:2020-10-18
2020-10-18 [email protected] stronglzq
【摘要】針對常用到的this、super關鍵字進行總結。this關鍵字用來指代當前物件,super用來指代父類物件。
this關鍵字
this關鍵字用來訪問當前類的內容,指代當前物件,主要有以下用法:
(1)當方法中的變數與所在類的成員變數名稱相同時,用this.成員變數
表示類的成員變數。
public class Person{ private String name; private int age; public Person(String name){ // 區域性變數name將成員變數遮蔽 this.name = name; } }
(2)用this呼叫過載構造方法,即一個構造方法呼叫另一個構造方法,注意必須為構造方法的第一句,並且編譯器禁止在其他地方呼叫構造器。
public class Person{ private String name; private int age; // 無參構造方法1 public Person(){ System.out.println("Consructor with no parameter."); } // 有參構造方法2,呼叫無參構造1 public Person(String name, int age){ this(); this.name = name; this.age = age; System.out.println("Constructor with parameter name, age.") } }
(3)用this呼叫當前類的其他方法,語法為this.被呼叫的方法名
,但呼叫當前類的其他方法直接呼叫即可,無需使用this。
(4)this和super關鍵字無法在靜態方法中使用。因為this指代當前物件,super指代父類物件,而靜態方法屬於類,只能通過類來呼叫,而無法通過物件來呼叫。
注:main()方法是靜態方法,故在main()方法中無法使用this和super關鍵字。
super關鍵字
與this關鍵字對應,super關鍵字用來呼叫父類的內容,指代父類物件。super主要有以下用法:
(1)呼叫父類的成員變數,語法為super.父類成員變數
。
(2)呼叫父類的成員方法,語法為super.父類成員方法
(3)子類構造方法呼叫父類構造方法,注意只能在構造方法中呼叫構造方法,並且呼叫語句必須放在第一句。
public class Person{
private String name;
private int age;
public Person(){
System.out.println("Superclass constructor with no parameter");
}
}
public class Teacher extends Person{
public Teacher(){
super();
System.out.println("Subclass constructor that called superclass constructor");
}
}
(4)注意this、super兩個關鍵字不能在靜態方法中使用。