当前位置: 首页 > news >正文

【C++】继承 ① ( 面向对象特点 | 类之间的关系 | 单继承与多继承 | 继承关系特性 )

文章目录

  • 一、面向对象相关概念
    • 1、面向对象特点
    • 2、类之间的关系
  • 二、继承概念
    • 1、名词说明
    • 2、单继承与多继承
      • 单继承
      • 多继承
    • 3、继承关系特性





一、面向对象相关概念




1、面向对象特点


面向对象的 4 4 4 大特点 :

  • 抽象 : 只关注对象的功能和行为 , 而不过问实现的具体细节 ;
  • 封装 : 将对象的 属性 和 方法 封装在一起 ;
  • 继承 : 新类中继承现有类的 属性 和 方法 ;
  • 多态 : 相同的操作作用于不同的对象 , 产生不同的结果 ;

2、类之间的关系


类之间的关系可以分为 三 大类 :

  • HAS-A 类关系 : 类由多个部件组成 , 类中的数据也是其它的类 ;
    • 聚合关系 Aggregation : 整体与部分之间的关系 , 部分可以脱离整体存在 ;
    • 组合关系 Composition : 整体与部分之间的关系 , 二者不可分 , 强于聚合关系 ;
  • USE-A 类关系 : 类对象之间存在关系 ;
    • 关联关系 Association : 一个类中定义了其它类的对象作为 成员变量 ;
    • 依赖关系 Dependency : 一个类的成员方法中使用了其它类的对象 作为参数 ;
  • IS-A 类关系 : 类的继承 , 接口实现 ;
    • 泛化关系 Generalization : 一般描述 和 具体描述 之间的关系 , 继承中的 父类 和 子类 就是这种关系 ;
    • 实现关系 Realization : 接口实现中的 接口 和 实现类 的关系 ;

本篇博客开始 讲解 IS-A 类关系 中的 继承关系 ( 泛化关系 Generalization ) ;





二、继承概念




1、名词说明


继承 是两个类之间的关系 ;

在C++中,使用 : 运算符来实现继承 ;


A 类 是 父类 , B 类 是 子类 ; B 类 继承 A 类 , A 类 派生 B 类 ;

  • 父类 又称为 基类 ;
  • 子类 又称为 派生类 ;

2、单继承与多继承


单继承 与 多继承 :

  • A 类 只有一个 子类 B 类 , 那么 该继承 就是 单继承 ;
  • A 类 有多个子类 B1 类 , B2 类 … , 该 继承 是 多继承 ;

单继承


单继承是指一个类只能继承一个父类的特性和行为 ;

下面的代码中 , Child 类继承了 Parent 类的所有公有和保护成员 , 并且可以访问它们 ;

  • 注意 : Child 类不能继承 Parent 类的私有成员 ;
class Parent {  // 父类成员  
};  class Child : public Parent {  // 子类成员  
};

多继承


多继承是指一个类可以继承多个父类的特性和行为 ;

下面的代码中 , Child 类继承了 Parent1 和 Parent2 类的所有 公有 和 保护 成员 , 并且可以访问它们 ;

  • 注意 : Child 类不能继承 Parent1 和 Parent2 类的 私有成员 ;
class Parent1 {  // 父类1成员  
};  class Parent2 {  // 父类2成员  
};  class Child : public Parent1, public Parent2 {  // 子类成员  
};

3、继承关系特性


继承关系示例 : 人类 -> 学生 -> 男学生 ;

  • 人类是 父类 , 学生 继承 人类 , 男学生 继承 学生 ;

继承关系有如下特性 :

  • 传递性 : 三者都具有 人类 的特征 , 这是 继承关系 的 " 传递性 " ;
  • 不对称性 : 不是 所有的 人类 都是 学生 , 不是所有的 学生 是 男学生 , 这是 继承关系 的 " 不对称性 " ;

相关文章:

【C++】继承 ① ( 面向对象特点 | 类之间的关系 | 单继承与多继承 | 继承关系特性 )

文章目录 一、面向对象相关概念1、面向对象特点2、类之间的关系 二、继承概念1、名词说明2、单继承与多继承单继承多继承 3、继承关系特性 一、面向对象相关概念 1、面向对象特点 面向对象的 4 4 4 大特点 : 抽象 : 只关注对象的功能和行为 , 而不过问实现的具体细节 ;封装 :…...

虹科方案 | 虹科ATTO加速虚拟存储管理

虹科方案 | 虹科ATTO加速虚拟存储管理 文章来源:虹科网络安全 点此阅读原文:https://mp.weixin.qq.com/s/SYruurSQSodUvyhZBr-BMQ 1 方案背景 企业越来越多地转向服务器虚拟化,以有效利用硬件资源、降低运营成本,并为维护和灾难恢…...

Docker项目部署lnmp+wordpress

一.项目环境 公司在实际的生产环境中,需要使用Docker 技术在一台主机上创建LNMP服务并运行Wordpress网站平台。然后对此服务进行相关的性能调优和管理工作。 1.1 环境描述 主机 操作系统 IP地址 主要软件 Docker C…...

leetcode 121. 买卖股票的最佳时机、122. 买卖股票的最佳时机 II

121. 买卖股票的最佳时机 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从…...

系统架构设计:5 论软件的可靠性设计

目录 一 可靠性设计 1 可靠性 2 影响可靠性的因素 3可靠性设计技术 (1)避错技术...

03 独立看门狗 hal库 stm32cubemx

1.设置配置参数 > 2.初始化 IWDG_HandleTypeDef hiwdg;/* IWDG init function */ void MX_IWDG_Init(void) //Tout((42^prer) rlr) /40 // IWDG_PRESCALER_8 (42^prer) 8/40 *5*2000 64/40 *4095 ---6s {/* USER CODE BEGIN IWDG_Init 0 *//* USER CODE END IWDG_…...

大数据学习(6)-hive底层原理Mapreduce

&&大数据学习&& 🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一下博>主哦&#x…...

SQLite:TIMESTAMP类型使用

SQLite:CURRENT_TIMESTAMP是以GMT时区为准,而不是本地机器的时区 在本文中,我们将介绍SQLite数据库中的一个特性:CURRENT_TIMESTAMP。在SQLite中,我们可以使用CURRENT_TIMESTAMP函数来获取当前时间戳。然而&#xff0…...

迅镭激光GI系列高功率激光切割机成功中标覆铜板龙头企业HZ公司

新材料被称为“发明之母”和“产业粮食”,是现代科技发展的基础,和信息技术、生物技术一起并称为最重要和最具发展潜力的三大领域,它是我国先进制造业发展的支撑和保障,对推动技术创新、促进制造业优化升级、保障国家安全等具有重…...

基于SSM的网络安全宣传网站设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…...

k8s修改集群IP--重置集群

原来IP地址 192.168.10.138 k8s-master 192.168.10.139 k8s-node1 192.168.10.140 k8s-node2 新IP地址 192.168.10.148 k8s-master 192.168.10.149 k8s-node1 192.168.10.150 k8s-node2 cp -Rf /etc/kubernetes/ /etc/kubernetes-bak pki 证书目录保留下来: rm -rf …...

记录:R语言生成热图(非相关性)

今天解决了一个困扰了我很久的问题,就是如何绘制不添加相关性的热图。一般绘制热图是使用corrplot包画相关性图,但是这样有一个前提,就是输入的数据集必须进行相关性分析。那么如果我不需要进行相关性分析,而是直接绘制能够反应数…...

第55篇-某did滑块流程分析-滑动验证码【2023-10-12】

声明:该专栏涉及的所有案例均为学习使用,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!如有侵权,请私信联系本人删帖! 文章目录 一、前言二、滑块流程分析三、参数分析1.verifyParam参数分析2.c参数分析四、captchaToken激活五、流程整理一、前言 我…...

正点原子嵌入式linux驱动开发——Linux内核顶层Makefile详解

之前的几篇学习笔记重点讲解了如何移植uboot到STM32MP157开发板上,从本章就开始学习如何移植Linux内核。 同uboot一样,在具体移植之前,先来学习一下Linux内核的顶层Makefile文件,因为顶层 Makefile控制着Linux内核的编译流程。 L…...

C++ 笔记索引

C 参考手册访问地址 环境 VS coda 配置 VS coda C、python运行与Dbug配置 C、python、VS code插件安装与SSH使用 (不推荐) w10系统一般只用vs w10系统 如何使用 C、cmake、opencv、 语言基础 C main函数 测试例子 C常用基本类型、数组、复制内存 memcpy C if、else、switc…...

Android攻城狮学鸿蒙-配置

1、config.json配置 鸿蒙中的config.json应该类似于Android开发中Manifest.xml,可以进行页面的配置。根据顺序,会识别启动应用的时候,要打开哪个界面。 2、 Ability详解,以及与Android的Activity对比。 他人的学习文章连接&…...

SpringBoot 接口 字节数组直接显示为图片

源码: import java.io.ByteArrayOutputStream; import javax.imageio.ImageIO; import org.springframework.web.bind.annotation.RequestMapping;/*** 获取二维码图像* 二维码支付** param price 金额* return 二维码图像* throws IOException IOException*/ Requ…...

黄金票据与白银票据

文章目录 黄金票据与白银票据1. 背景2. 具体实现2.1 Kerberos协议认证流程 3. 黄金票据3.1 条件3.2 适用场景3.3 利用方式 4. 白银票据4.1 条件4.2 适用场景4.3 利用方式 5. 金票和银票的区别5.1 获取的权限不同5.2 认证流程不同5.3 加密方式不同 6. 经典面试题6.1 什么是黄金票…...

发稿渠道和发布新闻的步骤和技巧,收藏!

在现代社会中,新闻的发布和传播起着至关重要的作用。通过新闻,人们可以获取及时的信息,了解社会动态和事件发展。而对于企业和组织来说,通过新闻发布可以宣传品牌、推广产品,增加曝光度,吸引目标受众的关注…...

【Leetcode】204. 计数质数

一、题目 1、题目描述 给定整数 n ,返回 所有小于非负整数 n 的质数的数量 。 示例1: 输入:n = 10 输出:4 解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。示例2: 输入:n = 0 输出:0示例3: 输入:n = 1 输出:0提示: 0 <= n <= 5 * 1062、基础框架…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码&#xff0c;CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短&#xff0c;所以CPU会不断地切换线程执行&#xff0c;从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

Rust 开发环境搭建

环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行&#xff1a; rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu ​ 2、Hello World fn main() { println…...