本章節(jié)目標(biāo):
了解繼承在java中有什么作用,以及在代碼上如何實(shí)現(xiàn)繼承。
繼承是面向?qū)ο笕筇卣髦?,封裝居首位,封裝之后形成了獨(dú)立體,獨(dú)立體A和獨(dú)立體B之間可能存在繼承關(guān)系。其實(shí)程序中的繼承靈感來(lái)自于現(xiàn)實(shí)生活,在現(xiàn)實(shí)生活中繼承處處可見,例如,兒子繼承了父親的財(cái)產(chǎn),兒子不需要努力就很有錢。
圖12-1:現(xiàn)實(shí)世界中的繼承
繼承時(shí)子類繼承父類的特征和行為,使得子類對(duì)象(實(shí)例)具有父類的屬性,或子類從父類繼承方法,使得子類具有與父類相同的行為。兔子和羊?qū)儆谑巢輨?dòng)物類,獅子和豹屬于食肉動(dòng)物類。食草動(dòng)物和食肉動(dòng)物又是屬于動(dòng)物類。所以繼承需要符合的關(guān)系是:is-a(Bird is-a Animal),父類更通用,子類更具體。雖然食草動(dòng)物和食肉動(dòng)物都是屬于動(dòng)物,但是兩者的屬性和行為上有差別,所以子類會(huì)具有父類的一般特性也會(huì)具有自身的特性。
為什么要使用繼承機(jī)制?在不同的類中也可能會(huì)有共同的特征和動(dòng)作,可以把這些共同的特征和動(dòng)作放在一個(gè)類中,讓其它類共享。因此可以定義一個(gè)通用類,然后將其擴(kuò)展為其它多個(gè)特定類,這些特定類繼承通用類中的特征和動(dòng)作。繼承是 Java 中實(shí)現(xiàn)軟件重用的重要手段,避免重復(fù),易于維護(hù)。