java類(lèi)的繼承原則 java中子類(lèi)重寫(xiě)繼承的方法的規(guī)則是什么?
java中子類(lèi)重寫(xiě)繼承的方法的規(guī)則是什么?A.重寫(xiě)規(guī)則之一:重寫(xiě)方法的訪問(wèn)級(jí)別不能比重寫(xiě)方法更嚴(yán)格。(但它可以更廣泛。例如,父類(lèi)方法是package access,子類(lèi)方法是public access
java中子類(lèi)重寫(xiě)繼承的方法的規(guī)則是什么?
A.重寫(xiě)規(guī)則之一:重寫(xiě)方法的訪問(wèn)級(jí)別不能比重寫(xiě)方法更嚴(yán)格。(但它可以更廣泛。例如,父類(lèi)方法是package access,子類(lèi)方法是public access。)B.重寫(xiě)規(guī)則2:參數(shù)列表必須與要重寫(xiě)的方法的參數(shù)列表相同。重寫(xiě)有一個(gè)孿生兄弟叫做重載,稍后會(huì)出現(xiàn)。如果子類(lèi)方法的參數(shù)與父類(lèi)的相應(yīng)方法不同,則是錯(cuò)誤的。這是過(guò)載,而不是重寫(xiě)。重寫(xiě)規(guī)則3:返回類(lèi)型必須與重寫(xiě)方法的返回類(lèi)型相同。重寫(xiě)規(guī)則4:重寫(xiě)方法不能拋出新的異?;虮戎貙?xiě)方法聲明的檢查異常更廣泛的檢查異常。但是你可以?huà)伋龈俚?,更有限的,或者沒(méi)有例外。重寫(xiě)規(guī)則5:不能重寫(xiě)標(biāo)記為final的方法。重寫(xiě)規(guī)則6:如果一個(gè)方法不能被繼承,它就不能被重寫(xiě)。
JAVA只可以單繼承但是object又是每個(gè)類(lèi)的超類(lèi),在這基礎(chǔ)上類(lèi)還可以繼承一個(gè)類(lèi),是什么原理?
1. Java只支持單一繼承,但可以實(shí)現(xiàn)多個(gè)接口。如果未顯示繼承任何類(lèi),系統(tǒng)將默認(rèn)繼承對(duì)象類(lèi)。但是,如果a顯示繼承B,則系統(tǒng)不會(huì)給出默認(rèn)的繼承對(duì)象,而是a將繼承B,B將繼承object,這相當(dāng)于間接地繼承對(duì)象。
2. 談到繼承,您會(huì)想到面向?qū)ο蟮囊粋€(gè)原則:優(yōu)先考慮組合而不是繼承。為什么?
首先,繼承和組合都可以達(dá)到代碼重用的效果。我認(rèn)為有以下考慮:
1。繼承的父類(lèi)繼承父類(lèi)的成員以增加耦合度
2。如果父類(lèi)發(fā)生變化,會(huì)影響子類(lèi),組合只需要保證接口的穩(wěn)定性
3。子類(lèi)在編譯時(shí)繼承父類(lèi),不能動(dòng)態(tài)更改,但組合可以根據(jù)需要使用不同的實(shí)現(xiàn)類(lèi)。
因此,組合更加靈活和可擴(kuò)展。
但是,如果您需要向上移動(dòng),或者明確說(shuō)明類(lèi)關(guān)系是is-a關(guān)系,則仍然需要使用繼承。
希望對(duì)您有所幫助,可以跟著我,繼續(xù)分享java知識(shí),謝謝。