面向对象:继承

文章目录

    • 一、什么叫继承?
    • 二、单继承
    • 三、多继承
      • 3.1多继承的各种情况
        • 3.1.1一般情况
        • 3.1.1特殊情况(菱形继承)
    • 四、菱形继承引发的问题
      • 4.1 问题1:数据冗余
      • 4.2 问题2:二义性(无法确定到底是访问哪个)
    • 五、虚拟继承解决菱形继承的问题
      • 5.1虚拟继承是什么?
      • 5.2虚拟继承如何解决二义性和数据冗余?
    • 六、继承和组合相对比
      • 6.1继承具有高耦合性,低内聚(关联性强)
      • 6.2组合具有低耦合高内聚的特性(关联性低)

在这里插入图片描述


先赞后看,养成习惯!!!^ _ ^<3 ❤️ ❤️ ❤️
码字不易,大家的支持就是我坚持下去的动力。点赞后不要忘了关注我哦!
所属专栏:C++进阶
在这里插入图片描述

一、什么叫继承?

继承就是子类继承父类的公有的和保护的成员,子类在C++中被称作派生类,父类也就是基类
细节如下图:

在这里插入图片描述
通过监视窗口可以看到son继承了farther的成员,并且son的改变也影响着farther,同时farther的改变也能影响son
在这里插入图片描述
如果将基类的成员变成被保护的话,那么只有派生类可以访问到,外面访问不到

二、单继承

下面的图示就是表示单继承的关系

在这里插入图片描述

三、多继承

3.1多继承的各种情况

3.1.1一般情况

在这里插入图片描述

3.1.1特殊情况(菱形继承)

在这里插入图片描述
在这里插入图片描述

编译器里面也用了菱形继承,但是在真正工程项目上面基本上用的很少,因为会引发一系列问题

四、菱形继承引发的问题

4.1 问题1:数据冗余

在这里插入图片描述
在everyone对象中person成员有两个

4.2 问题2:二义性(无法确定到底是访问哪个)

在这里插入图片描述
指定作用域的话就可以访问到,但是造成了数据冗余的问题,还是无法全部解决问题
在这里插入图片描述

五、虚拟继承解决菱形继承的问题

5.1虚拟继承是什么?

就是在类前面加一个virtual
在这里插入图片描述

5.2虚拟继承如何解决二义性和数据冗余?

如下图B与C对象分别有一个指针,这个指针是指向对象A的地址,可以找出A对象在B和C中成员变量的值, 其中D包含整个BAC(这里的D不仅仅只包含_d的值,图解有点问题)

在这里插入图片描述
在这里插入图片描述

六、继承和组合相对比

6.1继承具有高耦合性,低内聚(关联性强)

在这里插入图片描述

6.2组合具有低耦合高内聚的特性(关联性低)

在这里插入图片描述
在一般的项目工程中组合的用处比较多,继承由于高耦合不适用于一些场景,但是后面的多态需要用到它
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/778810.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java毕业设计-基于springboot开发的原创歌曲分享平台-毕业论文+答辩PPT(附源代码+演示视频)

文章目录 前言一、毕设成果演示&#xff08;源代码在文末&#xff09;二、毕设摘要展示1、开发说明2、需求分析3、系统功能结构 三、系统实现展示1、平台功能模块2、后台功能模块2.1管理员功能模块2.2用户功能模块 四、毕设内容和源代码获取总结 Java毕业设计-基于springboot开…

威联通安装Kafka

最近在学习 Kafka 的知识&#xff0c;遇到一些问题网上搜到的信息不全。想要在本地安装一个 Kafka 进行验证&#xff0c;想到了之前买的 Nas 就开始折腾。 用 Docker 的方式安装 Kafka 现在的 Nas 很多都支持 Docker&#xff0c;我买的也支持。威联通的 Docker 叫 Container S…

基于vue的MOBA类游戏攻略分享平台的设计与实现|Springboot+Vue+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)

本项目包含可运行源码数据库LW&#xff0c;文末可获取本项目的所有资料。 推荐阅读100套最新项目持续更新中..... 2024年计算机毕业论文&#xff08;设计&#xff09;学生选题参考合集推荐收藏&#xff08;包含Springboot、jsp、ssmvue等技术项目合集&#xff09; 目录 1. …

Leo赠书活动-22期 【大模型在金融行业的应用场景和落地路径】文末送书

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; 赠书活动专栏 ✨特色专栏&#xff1a;…

深入探索C++对象模型(二)

类对象占用的空间 #include "pch.h" #include <iostream> using namespace std;class A {public: };//类对象所占用的空间 int main() {//std::cout << "Hello World!\n"; A obja;int ilen = sizeof(obja); cout << ilen << endl…

Go的数据结构与实现【Stack】

介绍 栈是存放值的一种特殊容器&#xff0c;在插入与删除值时&#xff0c;这种结构遵循后进先出&#xff08;Last-in-first-out&#xff0c;LIFO&#xff09;的原则&#xff0c;也就是说&#xff0c;值可以任意插入栈中&#xff0c;但每次取出的都是此前插入的最后一个值。 实…

Linux:详解TCP协议段格式

文章目录 认识TCPTCP协议段格式 本篇主要总结的是TCP协议的一些字段 认识TCP TCP协议全称是传输控制协议&#xff0c;也就是说是要对于数据的传输进行一个控制 以上所示的是对于TCP协议进行数据传输的一个理解过程 全双工 至此就可以对于TCP协议是全双工的来进行理解了&…

纸上得来终觉浅->代码详解锁升级

背景 最近再看关于锁升级的内容&#xff0c;一方面这个是编写代码时程序性能提高的一个利器&#xff0c;另一方面这部分也会是面试时候的热门话题。那么作者最开始也是通过b站视频包括一些csdn上面的资料去看&#xff0c;最终发现只是有一些结论&#xff0c;而没有具体的例子。…

为何视频订阅者倾向于长期关注:深度探讨用户粘性现象

在当今的数字化时代&#xff0c;视频平台已经成为人们获取信息、娱乐休闲的重要渠道。观察发现&#xff0c;许多用户一旦对某个视频创作者进行关注&#xff0c;往往较少出现主动取关的现象。这一现象背后隐藏着用户行为习惯、内容价值认知以及社区归属感等多种因素的影响&#…

​python学习之变量类型​

print单纯输中的十种数据类型只需要用print()函数即可&#xff0c;()里面直接写变量名。 下面重点介绍print格式输出&#xff1a; 第一种方法&#xff1a;一个萝卜一个坑&#xff0c;下面的代码中&#xff0c;{0}、{1}、{2}分别表示j,i,j*i&#xff0c;单引号里面是输出格式。…

【Webflux】实现全局返回Long转String

基于spring webflux框架,而非springmvc @Configuration public class LongToStringConfig {@Beanpublic ObjectMapper objectMapper() {ObjectMapper objectMapper = new ObjectMapper();SimpleModule simpleModule = new SimpleModule();simpleModule.addSerializer(Long.cla…

什么是土壤墒情检测站?它在农业生产中有什么作用?

土壤墒情检测站是一种专门用于监测土壤水分状况和土壤水力性质的设备。它由多个传感器和数据采集单元组成&#xff0c;能够实时监测土壤中的水分含量、土壤温度等参数&#xff0c;并收集和记录相关的数据&#xff0c;提供土壤墒情&#xff08;即土壤水分状态&#xff09;的详细…

Python教程:一文掌握Python多线程(很详细)

目录 1.什么是多线程&#xff1f; 1.1多线程与单线程的区别 1.2 Python 中的多线程实现方式 2.使用 threading 模块创建和管理线程 2.1创建线程&#xff1a;Thread 类的基本用法 2.2线程的启动和执行&#xff1a;start() 方法 2.3线程的同步和阻塞&#xff1a;join() 方…

2024年华为OD机试真题-图像物体的边界-Java-OD统一考试(C卷)

题目描述: 给定一个二维数组M行N列,二维数组里的数字代表图片的像素,为了简化问题,仅包含像素1和5两种像素,每种像素代表一个物体,2个物体相邻的格子为边界,求像素1代表的物体的边界个数。 像素1代表的物体的边界指与像素5相邻的像素1的格子,边界相邻的属于同一个边界,…

docker 安装Sentinel

1.拉取镜像&#xff1a;docker pull bladex/sentinel-dashboard 2.运行镜像&#xff1a;docker run --name sentinel -d -p 8858:8858 -d bladex/sentinel-dashboard 3. 访问地址&#xff1a; 本地地址&#xff1a;http://localhost:8858 (默认端口为8080) 远程地址&#xf…

【学习】软件测试人员如何设计出优秀的测试用例

在软件开发的过程中&#xff0c;测试用例如同工程质量的守护者&#xff0c;它们的存在确保了软件产品的稳定性和可靠性。然而&#xff0c;如何设计出优秀的测试用例&#xff0c;让其在千变万化的软件世界中独领风骚&#xff0c;成为众多测试工程师追寻的目标。本文将为你揭示其…

Android RecyclerView 滑动后选中的条目居中显示

话不多说先看效果: 实录效果视频如下 滚动居中 RecyclerView 在原有的RecyclerView 基础上操作&#xff0c;其他步骤不变&#xff0c;只是替换一下 manager 步骤 导入依赖 maven { url https://www.jitpack.io }//无限滚动implementation com.github.ZhaoChanghu:GalleryLayou…

(Java学习)File类与IO流

File类与IO流 文章目录 File类与IO流1. File类1.1 File类理解1.2 构造器1.3 常用方法1.4 练习 2. IO流概述2.1 IO流理解2.2 流的分类2.3 基础IO流的框架 3. FileReader/FileWriter3.1 执行步骤3.2 注意 4. FileInputStream / FileOutputStream5. 缓冲流6. 转换流的使用7. 对象流…

1、Cocos Creator 基础入门

目录 Cocos Creator 是什么&#xff1f; 语言支持 功能特性 工作流程 功能模块 相关游戏 参考 Cocos Creator 是什么&#xff1f; Cocos Creator 既是一款高效、轻量、免费开源的跨平台 2D&3D 图形引擎&#xff0c;也是一个实时 2D&3D 数字内容创作平台。拥有…

本地GDB 在geoserver发布地图服务

文章目录 简要说明maven依赖样例代码 简要说明 geoserver本身是不支持GDB的发布&#xff0c;不过可以利用gdal&#xff0c;将GDB的图层转为shpfile&#xff0c;就可以进行发布。maven依赖 <!--geoserver需要的jar--><dependency><groupId>com.github.dov-vl…