面对对象及其三大特性
面对对象
对象是指具体的某一个事物,这些事物的抽象就是类,类中包含数据(成员变量)和动作(成员方法)。
类(Class) 和 对象(Object) 是面对对象的两个主要方面。
下面例子展示了类和对象的区别:
Class | Objects |
---|---|
Fruit | Apple, Banana, Mango |
Car | Volvo, Audi, Toyota |
所以,类是对象的模板,对象是类的实例。当创建一个单独的对象时,它将继承类中的所有变量和函数。
C++ What are Classes and Objects?
面对对象的三大特性
封装
将具体的实现过程和数据封装成一个函数,只能通过接口进行访问,降低耦合性。
继承
子类继承父类的特征和行为,子类有父类的非 private 方法或成员变量,子类可以对父类的方法进行重写,增强了类之间的耦合性。C++11 中增加了 final 关键字,可以指定基类的一个虚函数不能在派生类中被重写,或一个类不能派生出其他类(不能被继承)。
多态
多态就是不同继承类的对象,对同一消息做出不同的响应。基类的指针(或引用)指向(或绑定)到派生类的对象,使得基类指针(或引用)呈现不同的表现方式。在 C++ 中多态一般是使用虚函数来实现的,使用基类指针调用函数方法时,如果指针指向的是一个基类的对象,则调用的是基类的虚函数;;如果该指针指向的是一个派生类的对象,则调用的是派生类的虚函数。
面对对象和面对过程的区别
OOP,也就是面对对象编程(Object-Oriented Programming)。
面对过程编程(process-oriented programming)是编写 对数据执行操作的 过程或函数,而面对对象编程是创建 包含数据和函数的 对象。
面对对象编程(OOP)相比于面对过程有以下几个优点:
- OOP 更快,更容易执行;
- OOP 使程序的结构清晰;
- OOP 有助于保持 C++ 代码 DPY(Don’t Repeat Yourself),使代码更容易维护、修改和调试;
- OOP 可以用更少的代码和更短的开发时间创建完全可重用的应用程序。
Tip: “Don’t Repeat Yourself” (DRY) 原则是减少代码的重复。你应该取出程序中相同的代码,把它们放在一个位置(封装调用),而不是重复代码块。
参考
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 PEACE's Blog!