三大特征包括:封装、继承、多态。
封装可以隐藏实现细节,使得代码模块化;
继承可以扩展已存在的模块,它们目的都是为了代码重用;
多态则是为了实现: 接口重用。
封装
- 概念:
①:该隐藏的数据私有化,该公开的公有化(接口)(private、public);
②:目的就是为了分工合作,有助于使用的方便和安全性;
③:防止不必要的扩展。
继承
- 概念:
实现代码和数据的复用,复用的实现在已有的代码和数据的基础上扩展。
例如:AX继承了A这个类showx的功能,又拓展了showy的特征。
#include <iostream>
using namespace std;
class A{
public:
A(){
}
~A(){
}
void showx(){
cout << "xxxxxxxxxxxxxxxxxxxx" << endl;
}
};
class AX:public A{
public:
void showy(){
cout << "yyyyyyyyyyyyyyyyyyyy" << endl;
}
};
int main()
{
A a;
a.showx();
AX b;
b.showx();
b.showy();
}
-
继承的方式及语法:
①公有继承 ----------- class B:public A{…};
父类的公有数据在子类中仍然公开
父类的受保护数据在子类中仍然受保护
父类的私有数据在子类中是隐藏的
②保护继承 ----------- class B:protected A{…};
父类的公有数据在子类中变为受保护
父类的受保护数据在子类中仍然受保护
父类的私有数据在子类中是隐藏的
③私有继承 ----------- class B:private A{…};
父类的公有数据在子类中变为私有
父类的受保护数据在子类中变为私有
父类的私有数据在子类中是隐藏的 -
注意:
①:父类中的成员在子类中的访问权限只会收缩,不会扩大,在子类中的访问属性不会超过继承方式。
②:所谓的继承方式就是能够提供给子类的最大访问权限,实际权限小于等于继承方式,私有的数据必然在子类中隐藏