this關鍵字
(1) 每個類的每個非靜態方法(沒有被static修飾)都會隱含一個this關鍵字,它指向呼叫這個方法的物件;當在方法中使用本類屬性時,都會隱含地使用this關鍵字,當然也可以明確使用,
this可以看成是一個變數,它的值就是當前物件的參考
this關鍵字只能在方法內部使用,表示對“呼叫方法的那個物件”的參考如果是在同一類中呼叫另外一個方法,則可以不用寫this,直接呼叫
(2) 為了區分屬性和區域變數,可以通過this關鍵字來呼叫
(3) this關鍵字的用法
*當類中非靜態方法的引數名與類的某個成員變數名相同時,為了避免引數作用范圍覆寫了成員變數的作用范圍,必須明確使用this關鍵字來指定
*如果某個構造方法的第一條陳述句具有形式this(...),那么這個構造方法將呼叫本類中的其他構造方法
*如果某個方法需要傳入當前物件,則可以將當前的物件作為引數傳遞給它
public class pra {
private String name;
private String sex;
private Integer age;
public pra(String name, String sex, Integer age) {
super();
this.name = name;
this.sex = sex;
this.age = age;
}
public pra() {
this("by", "女", 15); //調到了有參的構造方法
}
}
super關鍵字
super代表了父類空間的參考
(1) super的作用:
*子父類存在著同名的成員時,在子類中默認時訪問子類的成員,可以通過super關鍵字指定訪問父類的成員
*創建子類物件時,默認會先呼叫父類無參的構造方法,可以通過super關鍵字指定呼叫父類的構造方法
(2)super的用法
super可以用來參考直接父類的實體變數,
super可以用來呼叫直接父類方法,
super()可以用于呼叫直接父類建構式
class C {
String name = "A";
public void work() {
System.out.println("A作業!");
}
}
class B extends C {
String name = "B";
public B() {
super(); // 呼叫父類構造方法
}
public void work() {
System.out.println("B作業!");
}
public void pint() {
System.out.println(name);
System.out.println(super.name); // 呼叫父類的實體變數
super.work(); // 呼叫父類的方法
}
}
public class A {
public static void main(String[] args) {
B b = new B();
b.pint();
}
}
(3) 注意事項:
*如果在子類的構造方法上沒有指定呼叫父類的構造方法,java編譯器會在子類的構造器里面加上super()陳述句
* super關鍵字呼叫父類的建構式時,該陳述句必須要是子類建構式的第一個陳述句
*super和this不能同時出現在同一個建構式中呼叫其他的建構式,因為兩個陳述句都要是第一個陳述句
區別:
- 屬性的區別:this訪問本類中的屬性,如果本類沒有此屬性則從父類中繼續查找,super訪問父類中的屬性,
- 方法的區別:this訪問本類中的方法,如果本類沒有此方法則從父類中繼續查找,super訪問父類中的方法,
- 構造的區別:this呼叫本類構造,必須放在構造方法的首行,super呼叫父類構造,必須放在子類構造方法首行,
- 其他區別:this表示當前物件,super不能表示當前物件
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/264370.html
標籤:Java
上一篇:Go | Go 結合 Consul 實作動態反向代理
下一篇:spring事務
