5、继承与派生1-派生类的定义
1、在c++中,派生类的一般定义语法为:
class 派生类名:继承方式 基类名1,继承方式 基类名2,...,继承方式 基类名n
{
派生类成员声明;
};
定义一个Dr1从基类Base1、Base2派生而来的新类:
class Dr1:public Base1,private Base2
{
public:
Dr1();
~Dr1();
};
一个派生类可以同时有多个基类,这种情况称为多继承。也有单继承的情况。
继承方式规定了如何访问从基类继承的成员。继承方式关键字为:public、protected、private,分别表示公有继承、保护继承和私有继承,默认的继承方式就认为是私有继承方式。
派生类成员是指除了从基类继承来的所有成员之外,新增加的数据和函数成员。
2、派生类生成过程
在c++程序设计中,进行了派生类的定义之后,给出该类的成员函数的实现,整个类就算完成了;仔细分析派生类这个过程,实际是经历了三个步骤:吸收基类成员、改造基类成员、添加新的成员。面向对象的继承和派生机制,其最主要目的是实现代码的重用和扩充。
eg:
class employee
{
protected:
char name[20]; //姓名
int individualEmpNo;//个人编号
int grade;//级别
float accumPay;//月薪总额
static int employeeNo;//本公司职员编号目前最大值
public:
employee();//构造函数
~employee();//析构函数
void pay();//计算月薪函数
void promote(int);//升级函数
void SetName(char *);//设置姓名函数
char *GetName();//提取姓名函数
int GetindividualEmpNo();//提取编号函数
int Getgrade();//提取级别函数
float GetaccumPay();//提取月薪函数
};
class technician:public employee //兼职技术人员类
{
private:
float hourlyRate;//每小时酬金
int workHours;//当月工作时数
public:
technician();//构造函数
void SetworkHours(int wh);//设置工作时数
void pay();//计算月薪函数
};
1、吸收基类成员
在c++的类继承中,第一步是将基类的成员全盘接收,这样派生类实际上就包含了它的全部基类中除构造和析构函数之外的所有成员。在派生过程中构造函数和析构函数都不被继承。
2、改造基类成员
对基类成员的改造包括两方面,一个是基类成员的访问控制问题,主要依靠派生类定义时的继承方式来控制;第二个是对基类数据或函数成员的隐藏,就是在派生类中声明一个和基类数据或函数同名的成员,比如上面例子中的pay()。
如果派生类声明了同某基类同名的成员,那么在派生类的新成员就隐藏了外层同名成员。
3、添加新的成员
派生类新成员的加入是继承与派生机制的核心,是保证派生类在功能上有所发展的关键。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】