面向对象C++(从生物学理解继承 )

来源:互联网 发布:低碳钢的弹性模量算法 编辑:程序博客网 时间:2024/05/16 06:30

继承是面向对象编程的一个最基本的概念,我们也常常会使用父子关系来比喻这个逻辑,但需要指出的是,初学者必须要充分理解这个比喻的内涵:这里的继承指的是基因的继承,而不是财产的继承


基因的继承是无法拒绝的,而财产是可以选择的。基因实际上是一些性状的抽象,越往上游靠近祖先,性状越简单,越往下游靠近个体,性状越复杂。面向对象语言中,都有基类的概念,基类就像是最原始的生命体,只有最简单的蛋白质结构,后代子类继承了这个生命体征,并且逐步发展更多的性状(成员数据或者成员方法)。


更进一步,继承的概念可以扩展到所有的物品,而不仅仅是生物。比如电动车继承了自行车的形态,且同时增加了电动功能。但有些物品比较特殊,比如ZZR公司研发的悬停相机,它既是一架小四轴飞行器,也是一台高清相机,是同时继承了飞行器和相机两种基因的嵌入式AI新物种,并且有自己独特的“基因突变”。这样的物品,实际上就是C++的多重继承。


如果把一切物品的性状都抽象为基因,那么C++的继承比Java更贴近自然的逻辑,因为生物进化是可以杂交的(例如驴),非生物的演进也是经常跨界混搭的。很多品类可以同时融合很多基本品类发展而来。


最后啰嗦一句,在面向对象编程里,对世界的抽象能力非常重要,将具体的数据节点和事物抽丝剥茧,抽象出基类,并让其繁衍成各种所需的子类,是良好的代码架构的基础。

0 0
原创粉丝点击