- 面向对象编程的几大特性:封装、继承、多态,都是现实世界事物对象的特性。
封装:是一种手段,将真实世界的万物转化为计算机世界里的一种表示形式。
继承:是人类传承的唯一途径,人只是基因传承的中间载体,人类的发展终极目标是基因的传承和变异。在计算机领域的继 承,是将父类的精华继承过来,是一种代码的传承,便于以后发展成超级代码。也是利用封装基础,将真实世界的传 承用计算机技术的转化体现手段。
多态:是一种手段,将真实世界事物的特性,在基于封装的基础上来实现计算机对象的变异,从而更具体就是适应真实世界的 变化。
- 多态在设计上的作用:预留应对未来的变化。C++中使用Virtual关键字形成虚表存放所有virtual修饰的方法的函数指针,故一个virtual占据一个指针的大小空间。Go语言中使用struct关键字来封装事物的属性,接收器来限制事物的行为方法。使用interface关键字修饰一个接口即一个万能指针,只要实现接口函数方法的struct就能将实现的函数地址赋值给这些虚表上的函数指针,也即是接口的实现。多语言表现出来的形式虽有不一样,那只是写法上的伎俩,真正的本质还是虚表(指针列表)维护一系列函数指针,从而实现多态特性。
- 封装就是变量和函数整合在一起,面向对象的思想里,任何事物对象都有属性和行为。用计算机来描叙一个事物对象,对应起来就是:变量描述对象的属性,函数方法描述对象的行为。
- 继承就是一种组合方式,在开发语言正利用一些技术手段,使在语法编写是轻松实现,如:C++的“:”,Go语言在struct最后直接添加继承类型。很容易看出来就是一种组合手段。