面向过程与面向对象
面向过程
是一种以事件为核心、自顶向下的编程。把问题模块化。剖析出解决问题所需的步骤,而后用函数把这写步骤实现,并按顺序调用。面向对象
是以“对象”为核心的编程思维。把问题对象化。先建设形象模型,而后再应用模型解决问题。形象出对象的目标并不在于实现某个步骤,而是形容其在整个解决问题的步骤中的行为。
简略的举个例子:汽车动员、汽车到站。
- 这对于“面向过程”来说,是两个事件,汽车启动是一个事件,汽车到站是另一个事件。针对上述两个事件,写两个函数,之后顺次调用。
- 然而这对于“面向对象”来说,咱们关怀的是汽车这类对象,两个事件只是这类对象所具备的行为。而且对于这两个行为的程序没有强制要求。
面向过程
长处:性能高,因为类调用时须要实例化,开销比拟大;比方单 片机、嵌入式开发、Linux/Unix 等个别采纳面向过程开发,性能是最重要的因素。在程序较小的时候,面向过程就会体现出一种劣势,其程序流程非常分明。
毛病:没有面向对象易保护、易复用、易扩大
面向对象
长处:易保护、易复用、易扩大,反对封装、继承、多态性的个性,能够设计出低耦合的零碎
毛病:性能低
面向对象的特色
- 封装是指将某事物的属性和行为包装到对象中,这个对象可选择性的对外公开本人的属性和行为。具体来说,用 private、protected、public 三种修饰符或不必(即默认 defalut)对外部对象的拜访进行限度。
- 继承是子对象能够领有父对象的属性和行为,其子对象也就领有了这些属性和行为。
-
多态是指父对象中的同一个行为能在其多个子对象中有不同的体现。也就是说子对象能够依照本身需要
重写
父对象中的行为,使其领有不同于父对象和其它子对象的体现。多态体现在 overriding(重写)上,而 overload(重载)不属于面向对象中多态的领域,因为 overload(重载)概念在非面向对象中也存在。多态存在的三个必要条件:
- 要有继承
- 要有重写
- 父类援用指向子类对象。
多态实现的两种形式:
- 父类指针指向子类对象
- 将一个基类的援用类型赋值为它的派生类实例。
构造函数、析构函数不能被继承