首先,允許多層繼承但不允許多重繼承(一繼多) 子類本質(zhì)上是包含了父類的,下面這張圖片從內(nèi)存的角度解釋了這一點(diǎn) 值得一提的是構(gòu)造它們的時(shí)候走構(gòu)造函數(shù)的順序: 在構(gòu)造子類對象的時(shí)候要先構(gòu)造出一個(gè)父類對象,也就是說,先執(zhí)行父類的無參構(gòu)造或者系統(tǒng)幫忙添加的無參構(gòu)造,再走子類的構(gòu)造。 假如父類沒有無參構(gòu)造卻有有參構(gòu)造,系統(tǒng)不會(huì)幫忙添加了無參版本了,也就會(huì)報(bào)錯(cuò),這時(shí)候子類可以通過super去顯式調(diào)用父類有參版本的構(gòu)造。
多態(tài)涉及的訪問規(guī)則看似很復(fù)雜,但總結(jié)起來就是:一個(gè)子類“被當(dāng)作父類”使用時(shí)就只能訪問父類有的成員和方法,其中被重寫覆蓋的方法用覆蓋后的版本,注意靜態(tài)方法不會(huì)被覆蓋。向下轉(zhuǎn)型之后就是一個(gè)普通類。
抽象的繼承,規(guī)則本身沒有什么好說的,那就是有一些共性被抽象提煉出來了,作為抽象的方法或者類,一層層繼承下來我們可以任意給它具體化。 接口(interface)是一種特殊的抽象類(abstract class),區(qū)別在于:接口限定的更死,只有常量和抽象方法;接口跟它的子類是實(shí)現(xiàn)(implement)的關(guān)系,也是特殊的繼承(extends)。 允許:1.接口繼承接口的多層繼承和繼承多個(gè)接口的多重繼承 2.同時(shí)繼承類和多個(gè)口
嵌套在類中(方法外),本質(zhì)是成員(所以可以static),所以它訪問外部類成員就像其他普通成員一樣平等。外部類訪問內(nèi)部類對象得先創(chuàng)造出它的對象。
嵌套在方法中,只能訪問局部的final變量。 原因在于局部變量會(huì)隨著方法調(diào)用完畢而消失,但內(nèi)部類還在堆中暫時(shí)未被回收。加上final以后,內(nèi)部類中變量的調(diào)用就會(huì)被替換為常量,否則到了回收內(nèi)部類的時(shí)候就找不到這個(gè)變量。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注