繼承:
子類 extends父類{}
class C {
void demo1() {
}
}
class A extends C {
// A繼承自C,所以也具有demo1方法
// void demo1(){}
void demo2() {
}
}
class B extends C {
// B繼承自C,所以也具有demo1方法
// void demo1(){}
void demo3() {
}
}
特點:1、提高了代碼的複用性;
2、讓類與類之間長生了關係,有了這個關係,纔有了多態的特性。
注意:類與類之間必須具有所屬關係才能使用繼承,即… is a …。
*JAVA語言中,只支持單繼承,不支持多繼承。因爲多繼承會帶來安全隱患,當多個父類中定義了相同的功能,當功能內容不同時,子類對象不知道執行哪一個。但是JAVA語言中保留了這種機制,並用另一種體現形式來完成表示:多實現。
*JAVA語言支持多層繼承,是一種繼承體系。
使用一個繼承體系中的功能的方法:
1、首先查閱父類的描述,因爲父類中定義了該體系中的共性功能。
2、創建最子類的對象,一是因爲父類有可能不能創建對象;二是創建子類可以使用更多的功能,包括基本功能和特有功能。
*事物之間不一定有繼承關係,有可能具有聚集關係,根據關係的緊密程度又分爲聚合和組合,其中組合關係練習更緊密。
*子父類中變量的特點:
如果子類中出現非私有的同名成員變量時,子類要訪問本類中的變量用this;子類要訪問父類中的變量用super。
*子父類中的函數的特點:覆蓋
當子類中出現和父類一模一樣的方法時,但子類調用該方法時,會運行子類中的該方法。
1、子類覆蓋父類,必須保證子類權限大於父類權限
2、靜態只能覆蓋靜態
*子父類中的構造函數的特點
子類所有的構造函數,默認都會訪問父類的空參構造函數,因爲子類中每個構造函數內的第一行都有一句隱式super();當父類中沒夠空參的構造函數時,子類必須手動通過super語句形式指定要訪問的父類中的構造函數;當然子類的構造函數第一行也可以手動指定this語句來訪問本類中的構造函數;子類中至少會有一個構造函數訪問父類中的構造函數。