更新時間:2022-06-24 09:15:38 來源:動力節(jié)點 瀏覽1560次
Java父類子類的執(zhí)行順序是怎樣的?動力節(jié)點小編告訴大家,java和其他語言一樣,子類可以繼承父類,但父類不能繼承子類。
譬如創(chuàng)建兩個類,一個Fruit類,一個Apple類,你可以Fruit a = new Apple,不可以Apple a = new Fruit。
以常用的List型為例,你可以List l = new ArraytList,但不可以反著來。
而在List,Set等類型中,即使時它們的具體類型(就是用兩個三角括號包起來的那個)是父子類的關(guān)系,它們也不能互相繼承。
比如List a = new List,Set l =new Set,這兩種寫法都是錯的,但是List s = new ArrayList是正確的。
通過這兩個例子,可以粗略的看到,對與可以進(jìn)行細(xì)化元素類型的類型,即使細(xì)化的元素互為父子類關(guān)系,它們也不能夠互相繼承,而對類型本身則是不會遇到這個問題的。
這是因為java在運行程序時,會把List、Set之類的類型的類型細(xì)化(后面三角括號里的東西)全部擦除,擦除的結(jié)果就導(dǎo)致在運行時如果加入屬于List但不屬于ArrayList(以Set l =new Set這句代碼為例)的元素,系統(tǒng)不會報錯。這無疑會造成嚴(yán)重的錯誤。因此,為了避免這種錯誤,java決定在系統(tǒng)運行之前的檢查中就規(guī)避掉這種行為。
同時,對于java的子類型還有如下的約束:
1.子類型可以增加方法,但不能刪除方法
2.子類型需要具體化父類型中抽象的方法
3.子類型方法有更多的不變量,更強的前置條件和更弱的后置條件
初級 202925
初級 203221
初級 202629
初級 203743