繼承: extends
讓學(xué)生和person產(chǎn)生關(guān)系,就可以讓學(xué)生使用person中的共性內(nèi)容芽世。
class Student( ) extends Person{}
繼承的作用:
a.提高了代碼的復(fù)用性黔酥;
b.讓類與類之間產(chǎn)生關(guān)系藻三,為第三個特征多態(tài)提供前提。
java支持單繼承不支持多繼承
多層次繼承:學(xué)習(xí)一個繼承體系時跪者,先看頂層看基本功能棵帽,使用時,找體系最下面的對象渣玲。
什么時候定義繼承逗概?
答:當(dāng)事務(wù)之間存在所屬(is a)關(guān)系時,可以用繼承忘衍。
是否具備父類中所有的東西才能繼承逾苫。
對于父類中私有部分,子類是無法訪問的枚钓。但是是具有的隶垮,是事物中的一部分,只是為日了提供安全性無法直接訪問秘噪,但是父類中是具備的狸吞,故子類也是具備的。
super關(guān)鍵字——代表父類的空間指煎, 與this很相似蹋偏,this代表本類對象的引用。
特殊情況——覆蓋: 子父類中出現(xiàn)一摸一樣的方法時至壤,子類對象運行的是子類的方法威始,稱為覆蓋。
覆蓋返回值類型像街、函數(shù)名黎棠、參數(shù)列表都一致晋渺。
覆蓋注意事項:
a.子類權(quán)限應(yīng)大于等于父類(父類中的show()有public修飾,子類的show()也需要public修飾)
b.靜態(tài)只能覆蓋靜態(tài)或被靜態(tài)覆蓋
創(chuàng)建子類對象時脓斩,父類的空參數(shù)構(gòu)造函數(shù)也運行木西。
因為子類中所有構(gòu)造函數(shù)的第一行都有一個隱式的super()語句。
調(diào)用本類中的構(gòu)造函數(shù)用this随静,調(diào)用父類中的構(gòu)造函數(shù)用super八千。
因為子類繼承了父類中的內(nèi)容,所以創(chuàng)建對象是必須先看父類是如何對內(nèi)容進行初始化的燎猛。
當(dāng)父類中無空參數(shù)構(gòu)造函數(shù)恋捆,子類要訪問弗雷德構(gòu)造函數(shù)需要通過顯示定義super語句來訪問。
class Fu
{
Fu(int x){
System.out.println("ddd"+x);
}
}
class Zi extends Fu
{
zi()
{
//super();
super(4);
syso("ddwwe");
}
}
把super(4)給換成this(4)也可以通過重绷,因為有了this就沒有super沸停,this和super一樣都得定義在第一行,但是this()引到另一個構(gòu)造函數(shù)是昭卓,這個里面也會有super()星立。
注意:用來調(diào)用父類構(gòu)造函數(shù)的super語句在子類構(gòu)造函數(shù)中必須定義在第一行,因為父類初始化要先完成葬凳。
12.問題:
a.
this和super都是與調(diào)用構(gòu)造函數(shù),它們可以同時存在嗎室奏?
答:不可以火焰,他們只能定義在第一行
b.
為什么要定在第一行?
答:因為初始化要先執(zhí)行胧沫。
final關(guān)鍵字:
final class Fu: 即沒法作為父類了昌简。
(1).final修飾符,可以修飾類绒怨、修飾方法與變量
(2).final修飾的類不能被繼承纯赎。
(3).final修飾的方法不能被覆蓋。
(4).final修飾的變量是個常量南蹂,只能賦值一次犬金。
當(dāng)要求數(shù)據(jù)不變時,需定義閱讀性強的名稱來表示該數(shù)據(jù)六剥,并將數(shù)據(jù)final化晚顷,被final修飾的變量,名稱規(guī)范是:所有字母都大寫疗疟,若由多個單詞組成則需要_來分割该默。