class 子類 extends 父類 { ??????? }
注意:
1.Java只支持單繼承,不支持多繼承。
2.Java支持多層(重)繼承(繼承體系)。
3.繼承關(guān)系一般不希望超過三層,如果超過那么就考慮重構(gòu)了
三、繼承的內(nèi)容???????
父類的私有的屬性和行為都不能繼承,其余都可以。1.??父類和子類成員變量不同名
?
//不存在同名的情況
class Father {
int a;
int b;
}
class Son extends Father {
int c;
public void func() {
a = 10;
b = 20;
c = 30;
}
}
}
?
在這里a,b直接訪問的父類繼承下來的a,b,能夠直接進(jìn)行賦值
2.?父類和子類成員變量同名//父類和子類成員變量同名
class Father {
int a;
int b;
}
class Son extends Father {
int a;
int b;
int c;
public void func() {
a = 10;
b = 20;
c = 30;
}
}
在這里a,b訪問的是子類中的a,b
總結(jié):
1.如果訪問的成員變量如果子類有,優(yōu)先訪問子類的。
2.如果子類中無,則訪問父類中的,如果父類也沒有,則編譯失敗.?
3.如果訪問子類父類中都有,則優(yōu)先訪問子類的,采用的就是一個(gè)就近原則
3.如果同名要訪問父類成員方法訪問父類的成員:
class Father {
int a;
int b;
}
class Son extends Father {
int a;
int b;
int c;
public void func() {
super.a = 10;
super.b = 20;
c = 30;
}
}
? 訪問父類的方法:
class Father {
public void func1() {
System.out.println("Father: func1");
}
}
class Son extends Father {
public void func1() {
System.out.println("Son: func1");
}
public void func2() {
System.out.println("Son: func2");
}
public void func3() {
super.func1();
func2();
}
}
? 在這里我們可以用super來指代父類,否則就會(huì)遵循就近原則直接訪問子類的成員。
注意:
1.super只能在非靜態(tài)方法中使用
2.在子類方法中,訪問父類的成員變量和方法
4.super和this相同點(diǎn):
?????1.super是一個(gè)關(guān)鍵字,代表父類的存儲(chǔ)空間標(biāo)識(shí)。(可以理解為父親的引用)
?????2.super和this的用法相似。
?????3.this代表對(duì)象的引用(誰調(diào)用就代表誰);
?????4.super代表當(dāng)前子類對(duì)父類的引用。
?????5.super();和this();都是在構(gòu)造函數(shù)的第一行,不能同時(shí)出現(xiàn)。
不同點(diǎn):
1.成員變量
this.變量 本類的super.變量 父類的
2.構(gòu)造方法
this(...) 本類的super(...) 父類的
3.成員方法
this.方法名() 本類的 super.方法名() 父類的
5.繼承代碼塊執(zhí)行順序?????1.父類靜態(tài)代碼塊優(yōu)先執(zhí)行,然后子類靜態(tài)代碼塊執(zhí)行,靜態(tài)代碼塊只執(zhí)行一次
?????2.在實(shí)例子類對(duì)象時(shí),父類實(shí)例代碼塊和父類構(gòu)造方法緊接著執(zhí)行.
?????3.子類的實(shí)例代碼塊和子類構(gòu)造方法再執(zhí)行
四、小結(jié)你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧