1.java代碼的復(fù)用方式
- 繼承
- 初始化基類(lèi)
導(dǎo)出類(lèi)對(duì)象包含一個(gè)基類(lèi)的子對(duì)象,因此導(dǎo)出類(lèi)初始化之前亚皂,編譯器首先調(diào)用基類(lèi)的構(gòu)造器對(duì)基類(lèi)進(jìn)行初始化俱箱。如果基類(lèi)構(gòu)造函數(shù)帶參數(shù),那么導(dǎo)出類(lèi)的構(gòu)造函數(shù)中需要顯示的利用super關(guān)鍵字調(diào)用基類(lèi)構(gòu)造器(因?yàn)樾枰@示的給出傳入的參數(shù)列表)灭必。
- 初始化基類(lèi)
- 組合
新類(lèi)中包含現(xiàn)已存在的類(lèi)的引用狞谱。那么,若要初始化這些對(duì)象可以通過(guò)三種方式:第一禁漓,在類(lèi)定義對(duì)象的地方跟衅,使用new關(guān)鍵字直接初始化。這意味在構(gòu)造器調(diào)用之前被初始化璃饱;第二与斤,在構(gòu)造器中初始化;第三荚恶,在要使用該對(duì)象之前撩穿。
2.代理
既暴露基類(lèi)的方法,又在導(dǎo)出類(lèi)中包含基類(lèi)的引用谒撼。
3.組合與繼承之間的選擇
組合用于想在新類(lèi)中使用現(xiàn)有類(lèi)的功能而非現(xiàn)有類(lèi)的接口食寡,即在現(xiàn)有類(lèi)中嵌入某個(gè)對(duì)象,讓新類(lèi)實(shí)現(xiàn)實(shí)現(xiàn)所需要的功能廓潜,但新類(lèi)用戶(hù)看到的只是新類(lèi)所定義的接口抵皱,而非嵌入對(duì)象的接口善榛。因此,為實(shí)現(xiàn)此結(jié)果呻畸,需要在新類(lèi)中嵌入一個(gè)private的現(xiàn)有類(lèi)對(duì)象移盆。
但也有另一種情況,允許新類(lèi)的用戶(hù)訪(fǎng)問(wèn)現(xiàn)有類(lèi)對(duì)象伤为,這種情況下咒循,只要現(xiàn)有類(lèi)隱藏了自身的具體實(shí)現(xiàn),那么這種做法就是安全的绞愚。使現(xiàn)有成員稱(chēng)為public有助于用戶(hù)了解如何使用新類(lèi)叙甸。
4.protected
就類(lèi)用戶(hù)而言,它是private位衩;然而裆蒸,對(duì)于繼承與此類(lèi)的導(dǎo)出類(lèi)或者位于同一個(gè)包內(nèi)的類(lèi)來(lái)說(shuō),它是可以訪(fǎng)問(wèn)的(protected提供了包內(nèi)訪(fǎng)問(wèn)權(quán)限)糖驴。
5.向上轉(zhuǎn)型
新類(lèi)是現(xiàn)有類(lèi)的一種類(lèi)型僚祷。由于導(dǎo)出類(lèi)確保基類(lèi)中所有的方法在導(dǎo)出類(lèi)同樣有效遂赠,所以向基類(lèi)中發(fā)送的消息同樣可以向?qū)С鲱?lèi)發(fā)送久妆。
在向上轉(zhuǎn)型的過(guò)程中,類(lèi)接口唯一可能發(fā)生的事情是丟失方法
6.final
編譯常量:這種情況有兩點(diǎn)要求跷睦,第一筷弦,必須是基本類(lèi)型,第二抑诸,定義時(shí)必須初始化烂琴。
運(yùn)行常量:在運(yùn)行時(shí)被初始化,且不能被改變蜕乡。
當(dāng)對(duì)對(duì)象的引用使用final時(shí)奸绷,表示引用恒定不變,引用本身不可變层玲,被引用的對(duì)象是可變的号醉。
final方法:private方法默認(rèn)帶final修飾。且final修飾的方法不允許被覆蓋辛块。