目录
抽象类
多态概念
多态的实现条件
重写
抽象类
概念:将包含纯虚数的类称为抽象类
virtual void Test()=0;//纯虚函数
注:抽象类不能实例化对象,抽象类必须被继承,而且在子类中要对基类中的纯虚函数进行重写。
多态概念
通俗来说就是多种形态,具体就是去完成某个行为,当不同的对象去完成时会产生不同的状态。
举例说明:
class Person {
public:
virtual void GoToWashRoom() = 0;
void Eat() {
cout << "Eat()" << endl;
}
protected:
string _name;
int _age;
};
class Man :public Person {
public:
virtual void GoToWashRoom() override {
cout << "Man::GoToWashRoom" << endl;
}
};
class Woman :public Person {
public:
virtual void GoToWashRoom() override {
cout << "Woman::GoToWashRoom" << endl;
}
};
说明:可以看到在Person类中具有一个纯虚函数GoToWashRoom();说明Person类是一个抽象类,不同的类继承这个抽象类对纯虚函数进行重写产生不同的状态,这就是多态。
多态的实现条件
前提:必须在继承方式
>>基类中必须要有虚函数,而且子类必须要对基类中的虚函数进行重写;
>>虚函数调用必须使用基类指针或引用调用虚函数
注:虚函数:被vritual关键字修饰的成员函数称为虚函数
重写
前提:一定在继承体系中,子类对基类中的虚函数进行重写
>>基类的函数一定要是虚函数。
>>子类要重写基类虚函数,子类虚函数的原型必须要与基类虚函数的原型一致(原型一致,函数名字,参数列表,返回类型完全相同)。
>>子类虚函数可以不用加virtual关键字-----一般情况加上。
>>子类和基类虚函数访问权限可以不同。



