接下来我想介绍类的一些特性,其中包括类的继承性、封装性以及多态性
一、类的继承性
1、新类从已有的类获得已有特性,称为类的继承;
(1)通过继承,新建的子类从已有的类里获得父类的特性(被继承的类称为父类,也称基类);
(2)派生类继承基类的所有数据成员和成员函数,并可对其做必要的增加或调整;
2、从已有的类(父类)产生一个新的子类,称为类的派生;
3、类的继承是用已有的类来建立专用新类的变成
(1)一个基类可以派生出多个派生类,每一个派生类又可以作为基类在派生出新的派生类,基类和派生类是相对而言的;
4、派生是基类的具体化,而基类则是派生类的抽象;
5、类的继承分为:私有继承、保护继承、公有继承;
(1)私有继承(private):基类中的公有成员和保护成员都以私有成员的身份出现在派生类;
(2)保护继承(protected):基类中的公有成员和保护成员都以保护成员的身份出现在派生类;
(3)公有继承(public):基类中的公有成员和保护成员被继承到派生类中属性不变;
继承方式 | public | proteced | private |
public | public | protected | 禁止访问 |
protected | protected | protected | 禁止访问 |
pvate | private | private | 禁止访问 |
6、一个派生类只从一个基类派生,称为单继承;
(1)单继承关系形成的层次是一个树形结构;
(2)箭头表示继承的方向,从派生类指向基类;
7、派生类不仅可以从一个基类派生,也可以从多个基类派生,称为多重派生;
(1)一个派生类有两个或多个基类;
(2)多重继承容易引发二义性问题,使用需要谨慎;
二、类的封装性
1、将有关的代码和数据封装在一个对象中,各个对象间相互独立,互不干扰;
2、将对象中的某些部分对外隐藏,隐藏内部细节只留下少量接口;
3、类具有信息隐藏的能力,能够有效的把类的内部数据隐藏器来,使外部函数只有通过类的公有成员才能访问类的内部数据;
4、封装使类称为一个具有ne内部数据的自我隐藏能力、功能独立的软件模块;类的公有成员也称为类的接口,外部函数要访问类的内部成员,只有通过类的公有成员才能实现;
(1)公有成员(public):该类成员和方法均可公开给自身、子类和外界使用;
(2)保护成员(protected):该类成员和方法只限成员本身和子类使用,不对外界开放;
(3)私有成员(private):该类成员和方法仅供自身使用,不对外界和子类开放;
三、类的多态性
1、相同的对象收到不同的消息或者不同的对象收到相同的消息时产生不同的动作,称为多态性;
2、C++支持两种多态性:编译时多态(静态)、运行时多态(多态);
(1)编译时多态:在编译期确定的一种多态,在C++中主要表现形式为函数模板(函数重载与多态无关)
(2)运行时多态:在运行时确定的一种多态,在C++中主要通过虚函数来实现的,主要体现在具有继承关系的父类和子类之间,子类重新定义父类的成员函数称为覆盖和重写,虚函数允许子类重新定义父类的成员函数(override主要用于编译器检查该函数是否从基类中继承)