面对对象

对象是指具体的某一个事物,这些事物的抽象就是类,类中包含数据(成员变量)和动作(成员方法)。

类(Class)对象(Object) 是面对对象的两个主要方面。

下面例子展示了类和对象的区别:

ClassObjects
FruitApple, Banana, Mango
CarVolvo, Audi, Toyota

所以,类是对象的模板,对象是类的实例。当创建一个单独的对象时,它将继承类中的所有变量和函数。

C++ What are Classes and Objects?

面对对象的三大特性

封装

将具体的实现过程和数据封装成一个函数,只能通过接口进行访问,降低耦合性。

继承

子类继承父类的特征和行为,子类有父类的非 private 方法或成员变量,子类可以对父类的方法进行重写,增强了类之间的耦合性。C++11 中增加了 final 关键字,可以指定基类的一个虚函数不能在派生类中被重写,或一个类不能派生出其他类(不能被继承)。

多态

多态就是不同继承类的对象,对同一消息做出不同的响应。基类的指针(或引用)指向(或绑定)到派生类的对象,使得基类指针(或引用)呈现不同的表现方式。在 C++ 中多态一般是使用虚函数来实现的,使用基类指针调用函数方法时,如果指针指向的是一个基类的对象,则调用的是基类的虚函数;;如果该指针指向的是一个派生类的对象,则调用的是派生类的虚函数。

面对对象和面对过程的区别

C++ What is OOP ?

OOP,也就是面对对象编程(Object-Oriented Programming)。

面对过程编程(process-oriented programming)是编写 对数据执行操作的 过程或函数,而面对对象编程是创建 包含数据和函数的 对象。

面对对象编程(OOP)相比于面对过程有以下几个优点:

  • OOP 更快,更容易执行;
  • OOP 使程序的结构清晰;
  • OOP 有助于保持 C++ 代码 DPY(Don’t Repeat Yourself),使代码更容易维护、修改和调试;
  • OOP 可以用更少的代码和更短的开发时间创建完全可重用的应用程序。

Tip: “Don’t Repeat Yourself” (DRY) 原则是减少代码的重复。你应该取出程序中相同的代码,把它们放在一个位置(封装调用),而不是重复代码块。

参考

面对对象及其三大特性

final specifier (since C++11)

C++ What is OOP?