C++中类的三种继承方式public(公有继承)、protected(保护继承)、private(私有继承)之间的差别(附思维导图)
注:若不指明继承方式,则默认是私有继承。
一:对于公有继承(public)方式:
- 基类的public和protected成员的访问属性在派生类中保持不变,但基类的private成员不可直接派生类中访问(可通过调用基类中访问属性为公有或保护的成员函数来访问基类中的私有成员)。即派生类中的成员函数可以直接访问基类中的public和protected成员,但不能直接访问基类的private成员。
- 基类成员对基类对象的可见性为:公有成员可见(或者说可访问),保护成员和私有成员不可见(或者说不可访问)。
- 基类成员对派生类的可见性为:基类的公有成员和保护成员可见,基类的私有成员不可见。
- 基类成员对派生类对象的可见性为:基类的公有成员可见,保护成员和私有成员不可见,即通过派生类的对象只能访问基类的public成员。
- 所以,在公有继承时,派生类的对象可以直接访问基类中的公有成员,派生类的成员函数可以直接访问基类中的公有成员和保护成员。
二:对于私有继承(private)方式:
- 基类的public和protected成员都以private身份出现在派生类中,但基类的private成员同样是不可直接访问的。
- 基类成员对基类对象的可见性为:公有成员可见,保护成员和私有成员不可见。
- 基类成员对派生类的可见性为:基类的公有成员和保护成员可见,基类的私有成员不可见。(经过私有继承之后,所有基类的成员都成为了派生类的私有成员或不可直接访问的成员,如果用此派生类进一步向下派生子类的话,基类的全部成员就无法在这个派生类的子类中被直接访问)
- 基类成员对派生类对象的可见性为:基类的公有成员、保护成员和私有成员均是不可见的,即通过通过派生类的对象不能直接访问基类中的任何成员。
- 所以,在私有继承时,派生类的对象无法直接访问基类中的任何成员,派生类的成员函数则依然可以直接访问基类中的公有成员和保护成员。另外,基类的公有和保护成员只能由直接派生类继承,而无法再向下继承。
三:对于保护继承(protected)方式
- 基类的public和protected成员都以protected身份出现在派生类中,基类的private成员也同样是不可直接访问的。
- 基类成员对基类对象的可见性为:公有成员可见,保护成员和私有成员不可见。
- 基类成员对派生类的可见性为:基类的公有成员和保护成员可见,基类的私有成员不可见。(比较私有继承和保护继承可以看出,实际上在直接派生类中,所有成员的访问属性都是完全相同的。但是,如果派生类作为新的基类继续派生时,二者的区别就出现了。)
- 基类成员对派生类对象的可见性为:基类的公有成员、保护成员和私有成员均是不可见的,即通过通过派生类的对象不能直接访问基类中的任何成员。
- 因此,保护继承既与私有继承有相似的地方也有与公有继承相似的地方。对派生类的对象来说,它与私有继承方式的性质相同。而对于其派生类来说,它又与公有继承方式的性质相同。这样做既实现了数据隐藏,又方便继承,实现代码重用。
C++中类的三种继承方式public(公有继承)、protected(保护继承)、private(私有继承)之间的差别(附思维导图)相关推荐
- 软件工程导论第三章复习总结附思维导图
软件工程导论第三章复习总结附思维导图 概述 准确回答"系统必须做什么" 必须理解并描述问题的信息域,根据这条准则应该建立数据模型 必须定义软件应该完成的功能,这条准则要求建立功能模 ...
- html将页面分成三块_导航渲染流程你真的知道从输入URL到页面展示发生了什么吗?(内附思维导图)...
导航渲染流程 通过这篇文章当你被问到从URL输入到页面展示都发生了什么的时候,基本都能对答如流,甚至可以一直深入的说,说到面试官闭麦哈哈哈~ 以下是本文的思维导图,直接拿图「点个赞」再走吧 ~ 求求了 ...
- 线程的三种创建方式和他们的优缺点
文章目录 一.线程的三种创建方式 1.继承Thread 2.实现Runable接口 3.实现Callable接口 二.三种创建方式的优缺点 1.使用Runnable接口比使用继承Thread的优势 2 ...
- 两个形状不同的长方形周长_借助思维导图玩转小学阶段三种不同计算图形周长的方法!...
小数老师说: 认识长方形.正方形.三角形等平面图形,周长是这些图形的一个基本特性.展开对周长的学习,首先要理解周长的意义,通常可以通过结合实例来理解,也可以经过实际的描边来具体感受周长的实际意义. 点 ...
- anki 插入表格_Anki+思维导图的两种方法(Anki+表格,Anki+幕布)
倘若我们在知乎上搜"如何用Anki制作思维导图",那么我们会看到这样几个回答.总结来说有以下几种办法: ①思维导图→图片,利用插件Image Occlusion Enhanced ...
- excel表格分割线一分为二_Anki+思维导图的两种方法(Anki+表格,Anki+幕布)
倘若我们在知乎上搜"如何用Anki制作思维导图",那么我们会看到这样几个回答.总结来说有以下几种办法: ① 思维导图→图片,利用插件Image Occlusion Enhanced ...
- protect 继承_c++三种继承方式public,protect,private
三种访问权限 public:可以被任意实体访问 protected:只允许子类及本类的成员函数访问 private:只允许本类的成员函数访问 三种继承方式 public 继承 protect 继承 p ...
- Java基础——Java多继承的三种实现方式
Java基础--Java"多继承"的三种实现方式 Java语言本身只支持单继承(每个类只能有一个父类),但单继承的局限性很大,因此,可以通过以下的方式实现"多继承&quo ...
- 你了解的继承方式html,法定继承、遗嘱继承、遗赠,这三种房产过户方式你了解多少?...
在房产过户的中,与继承相关的方式有三种:法定继承.遗嘱继承和遗赠.这三种过户方式其实是有较大不同的,下面我们就来具体分析下,希望能对需要的朋友有帮助. 过户 在房产过户中,与继承相关的有三种,分别是法 ...
- java如何实现定时任务_Java定时任务的三种实现方式
前言 现代的应用程序早已不是以前的那些由简单的增删改查拼凑而成的程序了,高复杂性早已是标配,而任务的定时调度与执行也是对程序的基本要求了. 很多业务需求的实现都离不开定时任务,例如,每月一号,移动将清 ...
最新文章
- exchange2007收件人管理
- linux/centos 解决Tomcat内存溢出,centostomcat
- java使用循环案例——CSDN博客
- 应用JDK 9 @不推荐使用的增强功能
- MySQL数据库修改用户登录密码的三种方式
- 解决vue项目在ie浏览器中不显示的问题
- java 文件名空格,java关于文件名带有空格的个人见解
- 重磅!AI大牛邢波出任AI大学校长,李开复姚期智都是校董
- 团队—贪吃蛇—需求分析
- leetcode刷题:合并两个有序链表
- SAP License:资产年结
- RabbitMQ从安装到深入
- 如何防止远程程序与RDS PG连接中断
- 【文文殿下】浅谈KMP算法next数组与循环节的关系
- MySQL备份与恢复详解(热备、冷备等相关术语解释)
- github创建远程仓库
- php getimagesize 导致系统变慢
- 读了下神书 Introduction to Linear Optimization
- 生物信息学之抗癌药物反应论文阅读四:MD-WDNN
- 【NS3】NS3安装 visualizer模块安装 (Windows+VMware+Kali) 2022.2
热门文章
- 2017 上海车牌(沪牌)标书购买攻略
- 面试java工程师,面试官一般问什么问题?
- bitlocker正在加密 c盘_win10不能分盘,硬盘提示Bitlocker已加密解决方法
- android图标分组名称唯美简单可复制,分组名称唯美简短的
- 基于动物性去思考人性
- vue打包报错error in ./node_modules/view-design/dist/styles/fonts/ionicons.svg?v=3.0.0
- mysql 两表关联查询 group by having
- linux服务器有电信和网通,Linux 双网关(电信与联通)
- 【项目管理案例】第九期:如何做好项目整合管理
- python实现等量随机分组