因為“面向?qū)ο蟆北緛砭筒皇鞘裁磭?yán)肅的學(xué)術(shù)理論,而是基于工程實踐提出的“更優(yōu)實踐”-遺憾的是,它最初的萌芽是正確的、后來的解釋卻是錯的;幸好,這個錯誤沒有持續(xù)太久就被糾正了:這就是為何“面向?qū)ο笕亍币豢淳蜄|拼西湊、而且工程師根據(jù)實踐經(jīng)驗迅速反擊那套謬論、給出了更靠譜的“組合優(yōu)于繼承”原則的原因。
再換句話說:最初的面向?qū)ο髮嵺`Simula 67*做出了對象、消息抽象;而這個抽象進(jìn)一步精確化為“接口/原型+”和“自適應(yīng)派發(fā)”(多態(tài)+)這兩個概念。
其中,接口/原型概念的本質(zhì)是“歸一化”,也就是可以用同樣的邏輯處理所有兼容對象;而“多態(tài)”其實是歸一化這個概念的附屬概念一通過“封裝””,把程序分成了“對外接口”和“內(nèi)部實現(xiàn)”兩個區(qū)域,從而允許“接口兼容就能任意替換”且“內(nèi)部修改不影響外部”。而為了“接口兼容就能任意普換”,自然就需要多態(tài)。
你看,原本兩個概念是并列的,業(yè)界卻給弄成了“接口”和“多態(tài)”這兩個不同層面的概念,這里是不是就出現(xiàn)了偏差?
不僅如此,接下來,業(yè)界開始犯更大的錯:他們發(fā)現(xiàn),概念之間存在遞進(jìn)關(guān)系。比如車,四輪車,轎車.….…….這是不是層層遞進(jìn)的?是不是我們實現(xiàn)了車,四輪車就只是“四個輪子的車”,而轎車則是多了個內(nèi)燃機(jī)及其操控系統(tǒng)的“四個輪子的車”?
如此一來,當(dāng)我們聲明“轎車是一種汽車”時,是不是直接把“飛汽車”的代碼綁到轎車?yán)锩?,就不用重寫關(guān)于汽車的很多代碼了?
于是,他們把這個概念也添加進(jìn)來,這就是“繼承”。