更新時(shí)間:2022-06-24 09:15:38 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1545次
Java父類子類的執(zhí)行順序是怎樣的?動(dòng)力節(jié)點(diǎn)小編告訴大家,java和其他語言一樣,子類可以繼承父類,但父類不能繼承子類。
譬如創(chuàng)建兩個(gè)類,一個(gè)Fruit類,一個(gè)Apple類,你可以Fruit a = new Apple,不可以Apple a = new Fruit。
以常用的List型為例,你可以List l = new ArraytList,但不可以反著來。
而在List,Set等類型中,即使時(shí)它們的具體類型(就是用兩個(gè)三角括號(hào)包起來的那個(gè))是父子類的關(guān)系,它們也不能互相繼承。
比如List a = new List,Set l =new Set,這兩種寫法都是錯(cuò)的,但是List s = new ArrayList是正確的。
通過這兩個(gè)例子,可以粗略的看到,對(duì)與可以進(jìn)行細(xì)化元素類型的類型,即使細(xì)化的元素互為父子類關(guān)系,它們也不能夠互相繼承,而對(duì)類型本身則是不會(huì)遇到這個(gè)問題的。
這是因?yàn)閖ava在運(yùn)行程序時(shí),會(huì)把List、Set之類的類型的類型細(xì)化(后面三角括號(hào)里的東西)全部擦除,擦除的結(jié)果就導(dǎo)致在運(yùn)行時(shí)如果加入屬于List但不屬于ArrayList(以Set l =new Set這句代碼為例)的元素,系統(tǒng)不會(huì)報(bào)錯(cuò)。這無疑會(huì)造成嚴(yán)重的錯(cuò)誤。因此,為了避免這種錯(cuò)誤,java決定在系統(tǒng)運(yùn)行之前的檢查中就規(guī)避掉這種行為。
同時(shí),對(duì)于java的子類型還有如下的約束:
1.子類型可以增加方法,但不能刪除方法
2.子類型需要具體化父類型中抽象的方法
3.子類型方法有更多的不變量,更強(qiáng)的前置條件和更弱的后置條件
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743