1.封装性
封装性是指外界无法访问我私有的或保护的成员,一般我们将成员变量设成私有,让外界无法知道我的细节。为了让子类能继承,我们也可以将成员设置成保护。
2.继承性
子类继承父类公有的或保护的成员。对于继承方式引起访问权限的变化,下面给出一张表格。
总结几个特点:
(1)默认继承方式为private
(2)private修饰的成员无法被继承
(3)要想不被外界访问又想被子类继承,可以将访问权限设置成protected
(4)访问权限大小排名:public > protected > private
3.多态性
多态分为静态多态和动态多态,其中静态多态分为重载跟函数模板,动态多态指的是重写。
(1)静态多态(编译期)
重载:同一个作用域下,函数名相同,参数不同的这样一组函数我们称他们构成一组重载函数。
函数模板:根据你提供参数的不同,在运行期生成不同的函数。
(2)动态多态(运行期)
父类实现的纯虚函数,子类对其实现,父类指针/引用指向/引用子类对象,指针/引用调用重写的方法。
下面我们通过一段简单的代码加深对上述概念的理解。
#include
using namespace std;
class Father
{
public:
virtual void show() // 多态性
{
cout << "Father::show" << endl;
}
private:
int f = 1;// 封装性
};
class Child : public Father // 继承性
{
public:
void show()
{
cout << "Child::show" << endl;
}
private:
int c = 2;
};
void show(int a)
{
cout << "调用全局有参数的show" << endl;
}
void show()
{
cout << "调用全局无参数的show" << endl;
}
int main(void)
{
Child child;
Father& f = child;
f.show(); // 调用的是子类的show
show(5); // 调用的是有参数的show
show(); //调用的是无参数的show
return 0;
}
在C++11后,多态一般都指的是动态多态。