C++中继承和派生详解(公有、私有、保护继承的区别)
继承和派生概述:
继承和派生是同一个过程从不同角的度看
保持已有类的特性而构造新类的过程称为继承。
在已有类的基础上新增自己的特性而产生新类的过程称为派生。
被继承的已有类称为基类(或父类)。
派生出的新类称为派生类(或子类)。
直接参与派生出某类的基类称为直接基类。
基类的基类甚至更高层的基类称为间接基类。
派生的目的
当新的问题出现,原有程序无法解决(或不能完全解决)时,需要对原有程序进行改造。
派生类的构成:
吸收基类成员
改造基类成员
添加新的成员
吸收基类成员:
默认情况下派生类包含了全部基类中除构造和析构函数之外的所有成员。
c++11规定可以用using语句继承基类构造函数。
改造基类成员:
如果派生类声明一个和某基类成员同名的新成员,派生的新成员就隐藏或覆盖了外层同名成员。
添加新的成员:
派生类增加新成员使派生类在功能上有所发展。
继承方式
不同继承方式的影响主要体现在:
派生类成员对基类成员的访问权限;
通过派生类对象对基类成员的访问权限。
三种继承方式:
公有继承
私有继承
保护继承
公有继承(public):
继承的访问控制
基类的public和protected成员:访问属性在派生类中保持不变;
基类的private成员:不可直接访问。
访问权限
派生类中的成员函数:可以直接访问基类中的public和protected成员,但不能直接访问基类的private成员;
通过派生类的对象:只能访问public成员。
举例:
定义一个点类(Point)
定义一个矩形类(Rectangle)
私有继承(private)
继承的访问控制:
基类的public和protected成员:都以private身份出现在派生类中;
基类的private成员:不可直接访问。
访问权限:
派生类中的成员函数:可以直接访问基类中的public和protected成员,但不能直接访问基类的private成员;
通过派生类的对象:不能直接访问从基类继承的任何成员。
举例
保护继承(protected)
继承的访问控制
基类的public和protected成员:都以protected身份出现在派生类中
基类的private成员:不可直接访问。
访问权限
派生类中的成员函数:可以直接访问基类中的public和protected成员,但不能直接访问基类的private成员;
通过派生类的对象:不能直接访问从基类继承的任何成员。
protected成员的特点与作用
对建立所在类对象的模块来说,它与private成员的性质相同。
对于其派生类来说,它与public成员的性质相同。
既实现了数据隐藏,有方便继承,实现代码重用。
多继承举例
//公有继承 对象访问 成员访问
public --> public Y Y
protected --> protected N Y
private --> private N N
//保护继承 对象访问 成员访问
public --> protected N Y
protected --> protected N Y
private --> protected N N
//私有继承 对象访问 成员访问
public --> private N Y
protected --> private N Y
private --> private N N
C++中继承和派生详解(公有、私有、保护继承的区别)相关推荐
- 从零开始学C++之继承(一):公有/私有/保护继承、overload/overwrite/override之间的区别...
一.继承 C++很重要的一个特征就是代码重用.在C语言中重用代码的方式就是拷贝代码.修改代码.C++可以用继承或组合的方式来重用.通过组合或继承现有的的类来创建新类,而不是重新创建它们. 继承是使用已 ...
- 公有/私有/保护继承、overload/overwrite/override之间的区别
一.继承 C++很重要的一个特征就是代码重用.在C语言中重用代码的方式就是拷贝代码.修改代码.C++可以用继承或组合的方式来重用.通过组合或继承现有的的类来创建新类,而不是重新创建它们. 继承是使用已 ...
- 继承单例模式 php_详解PHP单例模式之继承碰见的问题
详解PHP单例模式之继承碰见的问题<?php // 单例模式之继承 class Singleton { protected static $ins = null; private final f ...
- python的继承用法_【后端开发】python中继承有什么用法?python继承的用法详解
本篇文章给大家带来的内容是关于python中继承有什么用法?python继承的用法详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 面向对象三大特征 1.封装:根据职责将属性和方法 ...
- python的继承用法_python中继承有什么用法?python继承的用法详解
本篇文章给大家带来的内容是关于python中继承有什么用法?python继承的用法详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 面向对象三大特征 1.封装:根据职责将属性和方法 ...
- Python 在子类中调用父类方法详解(单继承、多层继承、多重继承)
Python 在子类中调用父类方法详解(单继承.多层继承.多重继承) by:授客 QQ:1033553122 测试环境: win7 64位 Python版本:Python 3.3.5 代码实践 ...
- python中类的构成_Python中类型关系和继承关系实例详解
本文详细介绍了Python中类型关系和继承关系.分享给大家供大家参考.具体分析如下: 如果一个对象A持有另一个对象B的ID,那么检索到A之后就可以检索到B,我们就说存在一个A到B的导航.这种导航关系使 ...
- python中的super用法详解_Python中super函数用法实例分析
本文实例讲述了python中super函数用法.分享给大家供大家参考,具体如下: 这是个高大上的函数,在python装13手册里面介绍过多使用可显得自己是高手 23333. 但其实他还是很重要的. 简 ...
- CC#中List用法介绍详解学习通http://www.bdgxy.com/roundWorker类用法总结学习通http://www.bdgxy.com/
文章来源: 学习通http://www.bdgxy.com/ 普学网http://www.boxinghulanban.cn/ 智学网http://www.jaxp.net/ 表格制作excel教程h ...
- php中yii的controller,详解PHP的Yii框架中的Controller控制器,yiicontroller
详解PHP的Yii框架中的Controller控制器,yiicontroller 控制器是 MVC 模式中的一部分, 是继承yii\base\Controller类的对象,负责处理请求和生成响应. 具 ...
最新文章
- 近期活动盘点:心电数据标注系统和深度学习诊断算法研究、2019年第六届清华大学大数据社会科学讲习班...
- 关于Unity中如何判断一个动画播放结束
- Cookie,Session的区别
- ad怎么批量改元器件封装_Altium Designer 批量修改元件封装的方法(修正)
- WEB前端 javascript、php关键字搜索函数的使用方法
- 手把手教你研发属于自己的智能无人机
- 模线性方程(中国剩余定理+扩展中国剩余定理)
- shell获取/etc/passwd中的用户名和id
- HDOJ 5071 Chat 模拟
- 判断数正负(信息学奥赛一本通-T1039)
- B 站疯传!P8技术大佬分享了20个免费Java课程,白拿不谢!!
- 内外网切换,内网固定ip
- 富士施乐3065扫描教程_富士施乐打印机3065怎么连接电脑扫描
- 数字孪生智慧医院:构建三维医疗看板可视化管理平台(四)
- iOS Programming - Disallow Alphabetic Characters
- 新人转行IC该怎么选择岗位?(内附各岗位学习视频)
- uni-app 中文档阅读倒计时
- 农业物联网智能灌溉的功能特点
- 2020 SCTF 部分WriteUp
- vc驿站视频教程笔记4 Cstring 讲解