繼承是面向?qū)ο蠓椒ㄖ械囊粋€(gè)重要概念。特殊類擁有一般類的屬性和操作色难。稱為特殊類對(duì)一般類的繼承芍阎。繼承是一種由已有類來(lái)擴(kuò)展新類的機(jī)制杯活,也是面向?qū)ο蠹夹g(shù)可提高軟件開發(fā)效率的一個(gè)重要原因虱歪。
多態(tài)是指一不同方式響應(yīng)同一方法調(diào)用的能力。
在子類中瘫里,不能直接訪問(wèn)從父類中 繼承的私有成員和方法实蔽。但可以通過(guò)調(diào)用從高父類繼承的公有方法(這個(gè)方法返回了父類中的私有變量和方法)達(dá)到間接調(diào)用的目的
對(duì)于可直接訪問(wèn)的靜態(tài)成員變量,父類谨读、子類局装、父類對(duì)象及子類對(duì)象均共享同一個(gè)靜態(tài)變量。
子類的構(gòu)造方法:
在類的繼承層次結(jié)構(gòu)中劳殖,父類和子類都有字節(jié)構(gòu)造方法铐尚。但子類不會(huì)繼承父類的構(gòu)造方法。但子類對(duì)象中既包含了從直接父類繼承類的成員變量哆姻,也包含了它新定義的成員變量宣增,為了構(gòu)造一個(gè)子類對(duì)象,必須對(duì)所有這些變量進(jìn)行正確的初始話矛缨。在調(diào)用子類的構(gòu)造方法的時(shí)候爹脾,子類的構(gòu)造方法又會(huì)在不顯示調(diào)用父類構(gòu)造方法的情況下隱式調(diào)用父類的默認(rèn)構(gòu)造方法(即什么參數(shù)都沒有的那種)。當(dāng)然父類構(gòu)造方法有參數(shù)或者怎樣箕昭,你可以用super()顯示調(diào)用父類的構(gòu)造方法灵妨,但這個(gè)方法必須在子類構(gòu)造方法的第一句。
方法的覆蓋和成員變量的隱藏
方法的覆蓋:在子類中定義一個(gè)與父類中的方法具有相同聲明的實(shí)例成員方法叫做子類成員方法對(duì)哦父類方法的覆蓋落竹,簡(jiǎn)稱覆蓋泌霍。
成員變量的隱藏:子類中定義了與父類中相同的成員變量時(shí)。這時(shí)述召,在子類對(duì)象中朱转,雖然從父類繼承的成員變量仍然存在,但是已經(jīng)無(wú)法直接訪問(wèn)它了积暖,必須使用super關(guān)鍵字或父類的一個(gè)應(yīng)用調(diào)用它了藤为。這就是成員變量的隱藏
注意一點(diǎn):如果有兩個(gè)類,一個(gè)類來(lái)自父類夺刑,一個(gè)類來(lái)自子類凉蜂。然后一個(gè)變量來(lái)自父類,在子類中也有同名的變量性誉。那么在子類調(diào)用繼承來(lái)自父類的方法時(shí)窿吩,使用的仍然是父類的那個(gè)變量。而在子類中調(diào)用子類定義的方法错览,使用同名變量來(lái)自子類定義的變量纫雁。
父類變量引用子類對(duì)象:通過(guò)父類引用變量引用子類對(duì)象時(shí),父類引用變量只能調(diào)用子類對(duì)象中從父類所繼承來(lái)的或重定義的方法倾哺,調(diào)用子類對(duì)象中自己額外定義的方法會(huì)導(dǎo)致編譯錯(cuò)誤轧邪。
instanceof運(yùn)算符用來(lái)判斷左邊的表達(dá)式的對(duì)象是否屬于右邊類的子類或同一個(gè)類刽脖。是則返回true否則false
final關(guān)鍵字
final關(guān)鍵字可用來(lái)修飾類、方法忌愚、變量
修飾類:當(dāng)用final關(guān)鍵字修飾某個(gè)類時(shí)曲管,這是,該類就不能被其他類繼承硕糊。通常我們也將final類稱為終結(jié)類
修飾方法:用final關(guān)鍵字修飾某個(gè)方法時(shí)院水,則該方法不能被子類中的方法進(jìn)行覆蓋。
修飾變量:final關(guān)鍵字修飾的變量只能被賦值一次简十,賦值以后檬某,該值不能被再改變
抽象類和接口:
抽象類要在類名前加一個(gè)abstract修飾。另外類中必須有[f訪問(wèn)修飾符] abstract 返回類型 方法名稱(【參數(shù)列表】)螟蝙;定義抽象方法是沒有實(shí)體的恢恼。抽象類是不可以實(shí)例化的。
從一個(gè)抽象父類中派生子類時(shí)胰默,有兩種情況场斑。第一種情況,只要沒把所有的抽象方法具體實(shí)現(xiàn)完牵署,該類還是抽象類漏隐。第二種是全部實(shí)現(xiàn)完的類,這個(gè)類才可以被實(shí)例化碟刺。
在一個(gè)抽象類中也可以有成員變量锁保;另外在一個(gè)抽象類中也可以有不是abstract修飾的成員方法薯酝。
定義接口
[修飾符] interface 接口名 [extends 接口名]{
static final 數(shù)據(jù)類型 常量名=常量數(shù)據(jù)半沽;
返回值類型 方法名(【參數(shù)】);
}
接口中所有方法和屬性都只能用public修飾吴菠。所以public可以省去者填,另外接口中所有方法都要求是abstract所以也可以不寫。
接口的實(shí)現(xiàn):implements關(guān)鍵字
關(guān)于繼承多態(tài):與繼承有關(guān)的多態(tài):在一個(gè)類的繼承體系層次中做葵,如果一個(gè)子類覆蓋了父類中的某個(gè)實(shí)例方法占哟,當(dāng)我們用一個(gè)引用了子類對(duì)象的父類變量調(diào)用被覆蓋的方法時(shí)。此時(shí)酿矢,程序執(zhí)行的是具體的子類對(duì)象中的方法榨乎。
關(guān)于接口的多態(tài):與接口有關(guān)的特性是指用一個(gè)接口類型的變量引用實(shí)現(xiàn)了該接口的類的對(duì)象時(shí),調(diào)用某個(gè)接口方法時(shí)瘫筐,是執(zhí)行的引用的那個(gè)對(duì)象里具體的方法蜜暑。