【C++】派生类与继承---开篇---派生类的概念

本文介绍了面向对象编程中的派生类与继承概念,包括派生类的作用、格式及构造步骤。详细讲解了基类成员在派生类中的访问属性,以及公有、私有、保护三种继承方式下的访问规则。通过实例解析,帮助读者理解如何通过继承提高代码复用性和扩展性。

生活嘛,有苦有乐,才显得丰富多彩,相信命运的安排,更相信自己,一时的阴霾总会过去,不要总是盯着苦难,想想自己拥有的,也许,你本来就很幸福~


前言

本节,我们开始进入下一章,派生类与继承。继承是面向程序设计的一个重要特性,它可以在已有类的基础上创建新的类,新类可以在已有类中继承函数和数据,并且可以重新定义或添加新的函数和数据,从而形成类的层次或等级。已有类称为基类或父类,在它基础上建立的新类,称为派生类或子类


1. 派生类的作用与格式

类的继承是新类从已有类那里得到已有类的特性,由已有类产生新类时,新类便继承了已有类的特征,同时新类可以加入自己的特征。已有类称为基类或父类,在它基础上建立的新类,称为派生类或子类
程序员可以通过添加或修改少量代码,就能得到新的类,较好地解决了代码的重用问题。

1.1 派生类继承的格式

如下代码
基类Basic定义了数据成员name,sex,num,和赋值函数set,打印函数show.
在这里插入图片描述
我们观察下面这个代码,会发现它与Basic都重复的代码.

string name;
string sex;
string num;
cout << “姓名:” << name << " 性别:" << sex << " 学号:" << num

在这里插入图片描述
经过修改,Basic为基类,类Stu为Basic派生类,改良代码的重用性,继承方式为公有继承public,默认接收来自Basic的所有函数与数据(除构造函数与析构函数)继承方式有公有继承,私有继承和保护继承,关于继承方式的知识,我们会在后面详细介绍。继承的格式class 派生类名 :继承方式 基类名
在这里插入图片描述

1.2 派生类构成的步骤

需要注意的是,并不是简单的把基类的成员与派生类新增加的成员合并到一起就构成了派生类,构造一个派生类实际上要经过三个步骤。

1)派生类从基类接收新成员
首先,派生类要把基类的所有成员(除构造函数与析构函数)接受过来

2)调整从基类接收的成员
派生类可以对接收的成员进行调整,调整包括以下两方面。
A. 改变基类成员在派生类的访问属性,这主要通过继承方式控制。例如,如果是私有继承,会将基类的公有成员和私有成员在派生类中全部调整为私有成员,派生类只能通过成员函数访问从基类继承的成员,不能通过对象直接访问。
B.派生类能对基类成员重定义,派生类中中的新成员会覆盖基类的同名成员,如上面的代码,Stu类中声明的的set函数与show函数,覆盖了基类中的同名函数,这时在派生类中,或在类外的对象,可通过函数名就能访问到函数。若成员函数的参数相同,为覆盖基类的同名函数,若函数参数类型与参数个数不同,则可重载基类的成员函数

3)在派生类中增加新成员
在基类增加新成员,体现了派生类对基类的扩展,是继承与派生机制的核心。在上面的代码中,Stu类新增了数据成员班级cla和成绩grade,实现打印成绩的功能,扩充了基类的功能。

2. 基类成员在派生类的访问属性

类的继承方式有公有继承public,私有继承private,保护继承protected,而基类的成员在派生类的属性可以有这四种,不可直接访问,公有,私有,保护。博主是这么理解的,基类的私有成员在哪种继承方式下都不可直接访问,其余的可以按优先级来,优先级私有>保护>公有,有私有的则为私有,公有和保护同理,投机取巧的优先级,大家会用就好。
在这里插入图片描述

基类成员公有继承私有继承保护继承
私有成员不可直接访问不可直接访问不可直接访问
公有继承公有私有保护
保护继承保护私有保护

3. 派生类对基类成员的访问规则

派生类对基类成员的访问形式有两种,其一为内部访问,由派生类新增成员函数对继承来的成员的访问。其二为对象访问,派生类的对象对继承的成员的访问。

3.1 私有继承的访问规则

下表为私有继承的访问规则。

基类成员私有成员公有成员保护成员
内部访问不可访问可访问可访问
对象访问不可访问不可访问不可访问

说明:
1)无论是哪种继承方式,基类的私有成员都只能通过成员函数访问,不可直接访问,必须通过访问继承来的函数,从而访问到基类的私有成员。

2)当继承方式为私有继承时,基类的公有成员和保护成员在派生类中为派生类的私有成员,派生类可通过成员函数访问到它们,对象不可直接访问。

3.2 公有继承的访问规则

基类成员私有成员公有成员保护成员
内部访问不可访问可访问可访问
对象访问不可访问可访问不可访问

说明:
1)当继承方式为公有继承时,基类的公有成员在派生类中仍为公有成员,对象和成员函数皆可访问

2)基类的保护成员在派生类中仍为保护成员,允许成员函数访问,不允许对象直接访问

3.3 保护继承的访问规则

基类成员私有成员公有成员保护成员
内部访问不可访问可访问可访问
对象访问不可访问不可访问不可访问

说明:
1)当继承方式为保护继承时,基类的公有成员和保护成员在派生类中都为保护成员,允许成员函数访问,不允许对象直接访问。


总结

本章为派生类与继承的入门,大家遇到不懂的地方一定要反复思考,或者自己写一篇博客整理下来。有不懂的地方,可以在评论区留言,或者私聊yena也可以呀~

第4章 MFC实用技术 93 4.1 MFC常用宏应用 94 0188 获取32位整数的低字节和高字节数据 94 0189 将两个16位数组合为一个32位数 94 4.2 MFC常用函数 94 0190 MFC常用调试函数 94 0191 判断某个句柄是否关联一个窗口 95 0192 MFC应用程序信息和管理函数 95 0193 Internet URL解析全局函数 95 4.3 MFC框架技术 96 0194 在类的定义时使其具有运行时类型识别的功能 96 0195 运行时判断某个对象是否是指定的类型 96 0196 禁止文档/视图应用程序运行时显示视图选择窗口 96 0197 多个窗口消息共享同一个消息处理函数 98 0198 遍历对话框中的子控件 99 0199 在程序中捕捉CException及其派生类的异常 100 0200 扩展消息映射宏 100 0201 THIS_FILE的含义 100 0202 为静态文本控件命名 100 0203 在基于对话框的应用程序中添加文档\视图的支持 101 0204 解析浮动状态下工具栏的父窗口 101 4.4 MFC编程技术 101 0205 根据位图资源ID获取位图大小 101 0206 将某个控件对象关联到对话框中的控件资源 102 0207 将一个全局函数指针关联到对话框类的某个方法 102 0208 修改应用程序的图标 102 0209 使用安全数组 103 0210 将子窗口的客户区域映射到父窗口中 103 0211 判断两个时间段的差距 103 0212 重新设置工程名称 103 0213 为dll文件生成lib文件 104 0214 如何将一个工程中的部分资源加到另一个工程中 104 0215 根据句柄获得窗口对象的方法 104 0216 如何共享MSDN 104 0217 从完整的文件名中去除路径 104 0218 从复合字符串中解析子串 105 0219 如何获得应用程序的完整路径 105 0220 修改对话框图标的几种方法 105 0221 将多个具有不同参数的函数赋值为同一个函数指针 105
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值