java子類繼承父類實(shí)例 JAVA只可以單繼承但是object又是每個(gè)類的超類,在這基礎(chǔ)上類還可以繼承一個(gè)類,是什么原理?
JAVA只可以單繼承但是object又是每個(gè)類的超類,在這基礎(chǔ)上類還可以繼承一個(gè)類,是什么原理?1.Java只支持單繼承,但是可以實(shí)現(xiàn)多個(gè)接口。如果A沒有顯示繼承任何類,系統(tǒng)會(huì)默認(rèn)繼承Object類,
JAVA只可以單繼承但是object又是每個(gè)類的超類,在這基礎(chǔ)上類還可以繼承一個(gè)類,是什么原理?
1.Java只支持單繼承,但是可以實(shí)現(xiàn)多個(gè)接口。如果A沒有顯示繼承任何類,系統(tǒng)會(huì)默認(rèn)繼承Object類,但是如果A顯示繼承了B,系統(tǒng)就不會(huì)給A默認(rèn)繼承Object了,但是A會(huì)繼承B,B繼承Object,相當(dāng)于A間接繼承了Object。
2.說到繼承就會(huì)想到面向?qū)ο罄锩娴囊粋€(gè)原則:優(yōu)先使用組合而不是繼承。為什么了?
首先,繼承和組合都是都可以達(dá)到代碼復(fù)用的效果。個(gè)人覺得有以下幾點(diǎn)考慮:
1.繼承的父類也就繼承了父類的成員,增加耦合性
2.父類有變動(dòng),會(huì)影響子類,而組合只需要確保接口穩(wěn)定
3.子類繼承父類在編譯期就決定了,不能動(dòng)態(tài)變化,而組合可以根據(jù)需要使用不同的實(shí)現(xiàn)類。
所以,組合更加靈活,具有可擴(kuò)展性。
但是如果需要向上轉(zhuǎn)型,或者明確類關(guān)系是is-a的關(guān)系還是需要使用繼承的。
希望對(duì)你有幫助,可以關(guān)注我,持續(xù)分享Java方面知識(shí),謝謝。
Java為什么不能繼承多個(gè)父類?
Java中支持單繼承,多實(shí)現(xiàn)。
如果支持多繼承,那么指一個(gè)子類能同時(shí)繼承于多個(gè)父類,從而同時(shí)擁有多個(gè)父類的特征,若子類繼承的父類中擁有相同的成員變量,子類在引用該變量時(shí)將無法判別使用哪個(gè)父類的成員變量,因此多繼承是存在爭議的,是不能多繼承的。
通俗點(diǎn)來將,一個(gè)人不可能是擁有多個(gè)父親或母親的。
java可不可以繼承多個(gè)類?
一個(gè)類不能直接繼承多個(gè)類,java是單繼承語言。比如說這樣:class A extends B,C 不能這樣寫,因?yàn)閖ava不支持多繼承。但是可以像下面這樣實(shí)現(xiàn)繼承多個(gè)類:class A extends B,class C extends A,這樣C就同時(shí)繼承了B和A兩個(gè)類了。