接口勝任作為和外部系統(tǒng)打交道的合同抽象類就不行
3)為什么接口能勝任作為和外部系統(tǒng)打交道的合同而抽象類就不行?(見(jiàn)下面我的山和車,肥皂的例子)【新手可忽略不影響繼續(xù)學(xué)習(xí)】馬克- to-win:馬克 java社區(qū):防盜版實(shí)名手機(jī)尾號(hào): 73203。
答:馬克-to-win:假設(shè)你用抽象類作為合同,外部系統(tǒng)有個(gè)類A,它本來(lái)固有就必須得繼承一個(gè)類B,現(xiàn)在還必須得繼承你這個(gè)抽象類,語(yǔ)法上不允許。反過(guò)來(lái),如果你不用抽象類而用接口作為合同,語(yǔ)法上就允許了。馬克-to-win:這樣,接口的多實(shí)現(xiàn)性,就等同于另外一句話:“不占繼承資源”。外部系統(tǒng)具有很強(qiáng)的不可預(yù)見(jiàn)性,換句話說(shuō), 誰(shuí)知道你過(guò)去的類繼承沒(méi)繼承其他的類,我不管,反正我的合同內(nèi)容寫在一個(gè)接口中,即使你過(guò)去必須繼承一個(gè)別的類,也不影響你再多實(shí)現(xiàn)一個(gè)我,因?yàn)槲沂墙涌凇?br>