面向對象C++(從生物學理解繼承 )

繼承是面向對象編程的一個最基本的概念,我們也常常會使用父子關係來比喻這個邏輯,但需要指出的是,初學者必須要充分理解這個比喻的內涵:這裏的繼承指的是基因的繼承,而不是財產的繼承


基因的繼承是無法拒絕的,而財產是可以選擇的。基因實際上是一些性狀的抽象,越往上游靠近祖先,性狀越簡單,越往下游靠近個體,性狀越複雜。面嚮對象語言中,都有基類的概念,基類就像是最原始的生命體,只有最簡單的蛋白質結構,後代子類繼承了這個生命體徵,並且逐步發展更多的性狀(成員數據或者成員方法)。


更進一步,繼承的概念可以擴展到所有的物品,而不僅僅是生物。比如電動車繼承了自行車的形態,且同時增加了電動功能。但有些物品比較特殊,比如ZZR公司研發的懸停相機,它既是一架小四軸飛行器,也是一臺高清相機,是同時繼承了飛行器和相機兩種基因的嵌入式AI新物種,並且有自己獨特的“基因突變”。這樣的物品,實際上就是C++的多重繼承。


如果把一切物品的性狀都抽象爲基因,那麼C++的繼承比Java更貼近自然的邏輯,因爲生物進化是可以雜交的(例如驢),非生物的演進也是經常跨界混搭的。很多品類可以同時融合很多基本品類發展而來。


最後囉嗦一句,在面向對象編程裏,對世界的抽象能力非常重要,將具體的數據節點和事物抽絲剝繭,抽象出基類,並讓其繁衍成各種所需的子類,是良好的代碼架構的基礎。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章