面向对象程序的主要特点是:抽象、封装、继承和多态。
抽象
抽象是指对具体问题进行概括,抽出一类对象的公共性质并加以描述。抽象通常包括两个方面:面向数据抽象和面向行为抽象。比如,不同的箱子拥有相同的属性长、宽、高,这可以被视作面向数据抽象。我们也可以根据箱子这些属性求得其面积或者体积,这可以视作面向行为抽象。
封装
封装就是将抽象得到的数据和行为相结合,形成一个整体(类)。对于一个类而言,其数据和函数都是其成员。
class Box{
public:
void set(int l,int w,int h);
int get_v();
private:
int length,width,height;
};
void Box::set(int l,int w,int h){
length = l;
width = w;
height = h;
}
int Box::get_v(){
return length*width*height;
}
继承
继承可以在一般概念基础上,派生出特殊概念,使得一般概念中的属性和行为可以被特殊概念共享,从而避免重复分析、重复开发的困境。通过类的这种层次结构,可以很好地反映出特殊概念与一般概念的关系。
多态
多态性是指一段程序能够处理多重对象的能力。在C++语言中,这种多态性可以通过强制多态、重载多态、类型参数化多态和包含多态4种形式来实现。
- 强制多态是通过将一种类型的数据转换为另一种类型的数据来实现的;
- 重载是指给同一个名字赋予不同的含义;
- C++使用虚函数实现包含多态;
- C++使用模板使用参数化多态,分为参数模板与类模板两种;