面向过程与面向对象
面向过程
是一种以事件为中心、自顶向下的编程。把问题模块化。分析出解决问题所需的步骤,然后用函数把这写步骤实现,并按顺序调用。面向对象
是以“对象”为中心的编程思想。把问题对象化。先建立抽象模型,然后再使用模型解决问题。抽象出对象的目的并不在于完成某个步骤,而是描述其在整个解决问题的步骤中的行为。
简单的举个例子:汽车发动、汽车到站。
- 这对于“面向过程”来说,是两个事件,汽车启动是一个事件,汽车到站是另一个事件。针对上述两个事件,写两个函数,之后依次调用。
- 然而这对于“面向对象”来说,我们关心的是汽车这类对象,两个事件只是这类对象所具有的行为。而且对于这两个行为的顺序没有强制要求。
面向过程
优点:性能高,因为类调用时需要实例化,开销比较大;比如单 片机、嵌入式开发、 Linux/Unix等一般采用面向过程开发,性能是最重要的因素。在程序较小的时候,面向过程就会体现出一种优势,其程序流程十分清楚。
缺点:没有面向对象易维护、易复用、易扩展
面向对象
优点:易维护、易复用、易扩展,支持封装、继承、多态性的特性,可以设计出低耦合的系统
缺点:性能低
面向对象的特征
- 封装是指将某事物的属性和行为包装到对象中,这个对象可选择性的对外公开自己的属性和行为。具体来说,用private、protected、public三种修饰符或不用(即默认defalut)对外部对象的访问进行限制。
- 继承是子对象可以拥有父对象的属性和行为,其子对象也就拥有了这些属性和行为。
多态是指父对象中的同一个行为能在其多个子对象中有不同的表现。也就是说子对象可以按照自身需求
重写
父对象中的行为,使其拥有不同于父对象和其它子对象的表现。多态体现在overriding(重写)上,而overload(重载)不属于面向对象中多态的范畴,因为overload(重载)概念在非面向对象中也存在。多态存在的三个必要条件:
- 要有继承
- 要有重写
- 父类引用指向子类对象。
多态实现的两种方式:
- 父类指针指向子类对象
- 将一个基类的引用类型赋值为它的派生类实例。
构造函数、析构函数不能被继承
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。