Chapter 10 类的继承(上篇)

目的:了解三种继承方式,并清楚其中的差别

🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃

10.1 继承与派生的概念

1.面向对象技术强调软件的可重用性,所以C++语言提供了类的继承机制,解决了软件重用问题

3.类的继承的定义:一个新类从已有的类那里获得其已有的特性的现象,在C++中所谓的“继承“就是一个已存在的的类的基础上建立一个新的类

3.类的派生:从已有的类产生一个新的子类,称为类的派生

a:派生类继承了基类的所有数据成员和成员函数,其可以对成员做必要的增加或调整,且一个基类可以派生出多个派生类,每个派生类又可以作为基类在派生出新的派生类,一次基类和派生类是相对而言的,一代一代派生下去,即形成了类的继承层次结构

b:派生的分类:多级派生+单级派生

4.注意⚠️:

a:类的继承的角度是从派生类到基类

b:类的派生的角度是从基类到派生

c:这个已存在的类称为“基类(base class)”或“父类(father class)”,新建立的类称为“派生类(derived class)”或“子类(son class)”

d:基类与派生类总的就是一句话:派生类是基类的具体化,而基类则是派生类的抽象,这句话也体现类与对象的关系

🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃

10.2 派生类的声明方式

1.形式: class 派生类名:[继承方式] 基类名

           {

                  派生类新增加成员

            };

class Student : public Student
{
   public:
     void display_1()
     cout<<"true"<<endl;
}

2.继承方式包括:public(公用的)、private(私有的)、protected(受保护的),继承方式是可选的,如果不写此项,则默认为private(私有的)

🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃

10.3 派生类的构成

1.派生类的说明:

a:做基类的类必须要定义,其原因显而易见,每个派生都包含并且都可以访问其基类的成员,为了使用这些成员,派生类必须知道它们是谁

b:如果要声明,但不实现一个派生类,则只要声明类即可,不用加继承方式和基类的类型

class Derived:public Buse;//❌❌,在这种只声明不实现的情况是错误的
class Dervied;//正确的

c:派生类有两部分构成:继承+定义新的成员

d:友元关系、构造函数、析构函数是不能继承的

e:基类定义了静态成员,每个静态成员只有一个派生和基类都可使用

f:静态成员为public,派生类可用的,但若是private,则派生类是不可以使用的,后年我们也会提到访问属性,则在这里不过多追叙了

2.派生类的3个工作部分

a:从基类接收成员,派生类把基类(除友元关系、构造函数、析构函数)没有选择的都继承过来了

b:调整从基类接收的成员,无选择的接收基类成员是不可避免的,但是程序员可以对这些成员的属性进行某些调整,利用访问属性来间接达到不想接收的目的

c:在声明派生类时新增加的成员,这很重要,体现了派生类对基类功能的拓展,这一部分后面也有知识点会补充的

🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃

10.4 派生类成员的访问属性

1.基类成员和友元访问基类成员

2.派生类的成员和友元访问派生类自己新增加的成员

3.基类的成员函数访问派生类的成员,基类是不可以直接访问派生类的,不过可以通过虚函数实现

4.派生类的成员函数访问基类的成员,基类的私有成员派生类是不可访问的

5.在派生类外访问基类成员

6.三种方式继承的访问属性

7.4种访问属性:

a:公用的,派生类内类外都可以访问

b:受保护的,派生类可以访问,派生类外不可以访问,其下一层的派生类可以访问

c:私有的,派生类内可以访问,派生类外不能访问

d:不可访问的,派生类内外都不能访问

注意⚠️:无论哪一种继承方式,在派生类中是不能访问基类的私有成员,私有成员只能被本类的成员函数所访问,毕竟派生类与基类不是同一类的

共同学习,欢迎指正!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

安科瑞微电网能量监测系统Acrel-2000MG 储能电站监测预警

在新型电力系统中&#xff0c;储能将成为至关重要的一环&#xff0c;是分布式光伏、风电等新能源消纳以及电网安全保障必要保障&#xff0c;在电源侧、电网侧、用户侧都会得到广泛的应用。《电力现货市场基本规则&#xff08;征求意见稿&#xff09;》以及各地出台的扶持政策给…

Axure RP软件揭秘:设计师的秘密武器

Axure rp是一种快速原型设计工具&#xff0c;可以制作高度互动的HTML原型。设计师不仅可以使用Axure绘制线框图和原型&#xff0c;还可以在Axure rp中完成一系列用户体验设计。在本文中&#xff0c;我们将根据用户体验设计师的真实经验&#xff0c;触发用户体验设计师的实际工作…

我们公司都用哪些软件?强烈推荐这些

大家好&#xff0c;我是鱼皮。周末给大家分享一些轻松的干货吧&#xff0c;聊聊我们公司在用的软件&#xff0c;说不定能帮大家提高学习工作效率呢~ 我把软件分为四大类&#xff1a;团队协作、内容创作、文件共享、效率提升&#xff0c;分别介绍&#xff0c;便于大家选取。 团队…

Flink会话集群docker-compose一键安装

1、安装docker 参考&#xff0c;本人这篇博客&#xff1a;https://blog.csdn.net/taotao_guiwang/article/details/135508643?spm1001.2014.3001.5501 2、flink-conf.yaml flink-conf.yaml放在/home/flink/conf/job、/home/flink/conf/task下面&#xff0c;flink-conf.yaml…

如何利用静态代理IP优化跨境电商运营

文章目录 什么是跨境电商心得分享IP的重要性如何注册小结 什么是跨境电商 跨境电商&#xff0c;即跨境电子商务&#xff0c;是指在不同关境&#xff08;国境&#xff09;之间通过互联网进行的商业交易活动。这种商业模式充分利用了网络的全球化特性&#xff0c;使得买卖双方不…

探索FTP:原理、实践与安全优化

引言 在正式开始讲解之前&#xff0c;首先来了解一下文件存储的类型有哪些。 DAS、SAN和NAS是三种不同的存储架构&#xff0c;分别用于解决不同场景下的数据存储需求。 DAS (Direct Attached Storage 直接附加存储)&#xff1a;DAS 是指将存储设备&#xff08;如硬盘&#x…

微信小程序上传并显示图片

实现效果&#xff1a; 上传前显示&#xff1a; 点击后可上传&#xff0c;上传后显示&#xff1a; 源代码&#xff1a; .wxml <view class"{{company_logo_src?blank-area:}}" style"position:absolute;top:30rpx;right:30rpx;height:100rpx;width:100rp…

商城小程序(8.购物车页面)

目录 一、商品列表区域1、渲染购物车商品列表的标题区域2、渲染商品列表区域的基本结构3、为my-goods组件封装radio勾选状态4、为my-goods组件封装radio-change事件5、修改购物车中商品的选择状态6、为my-goods组件封装NumberBox7、为my-goods封装num-change事件8、修改购物车商…

[zabbix] zabbix监控

一、温习zabbix自定义监控 二、zabbix 自动发现与自动注册 2.1 zabbix 自动发现 //zabbix 自动发现&#xff08;对于 agent2 是被动模式&#xff09; zabbix server 主动的去发现所有的客户端&#xff0c;然后将客户端的信息登记在服务端上。 缺点是如果定义的网段中的主机数…

Linux进程【2】进程地址空间(+页表详解哦)

fork 引言&#xff08;程序地址空间&#xff09;进程地址空间进程地址空间mm_struct 虚拟地址到物理地址的转化总结 引言&#xff08;程序地址空间&#xff09; 在之前的学习过程中&#xff0c;我们认识了内存与地址&#xff0c;并且了解了在程序地址空间中的基本分区&#xf…

C++ 之LeetCode刷题记录(十)

&#x1f604;&#x1f60a;&#x1f606;&#x1f603;&#x1f604;&#x1f60a;&#x1f606;&#x1f603; 开始cpp刷题之旅&#xff0c;多学多练&#xff0c;尽力而为。 先易后难&#xff0c;先刷简单的。 66. 加一 给定一个由 整数 组成的 非空 数组所表示的非负整数…

Alist开源网盘搭建

官网&#xff1a;https://alist.nn.ci/zh/github下载地址&#xff1a;https://github.com/alist-org/alist/releases gitcode上也提供了源码:https://gitcode.com/mirrors/alist-org/alist/tags 源码安装使用自己研究,这里不讲解,较为复杂 我使⽤的版本:v3.29.1 我的下载地址:…

[ACM学习] 动态规划基础之一二三维dp

课内学习的动态规划 有记忆的迭代 优化解的结构&#xff1a;原始问题的一部分解是子问题的解 三要素&#xff1a;1.子问题 2.状态的定义 3.状态转移方程 定义 线性dp的一道例题 dp[i]表示以位置 i 结尾的方案总数&#xff0c;dp[4]2&#xff0c;因为&#xff1a;首先只放一…

大数据开发之Hive(查询、分区表和分桶表、函数)

第 6 章&#xff1a;查询 6.1 基本语法及执行顺序 1、查询语句语法 select_expr, select_expr, ... FROM table_reference [WHERE where_condition] [GROUP BY col_list] [ORDER BY col_list] [CLUSTER BY col_list| [DISTRIBUTE BY col_list] [SORT BY col_list]] [LIMIT n…

C#~Winform取消窗体最大化最小化按钮

目录 取消最大化-false取消最小化-false效果 取消最大化-false 取消最小化-false 效果

Umi3 创建,配置环境,路由传参(代码示例)

目录 创建项目 配置环境 创建脚手架 项目结构及其目录、 路由 配置路由 嵌套路由 编程式导航和声明式导航 声明式导航 编程式导航 约定式路由 路由传参 query传参&#xff08;问号&#xff09; 接收参数 params传参&#xff08;动态传参&#xff09; 接收参数 创…

Android Text View 去掉默认的padding的实现方法

先看下最终实现效果&#xff0c;满意您在往下看&#xff1a; TextView 绘制的时候自带一定的Padding值&#xff0c;要想实现去掉默认的padding值&#xff0c;xml文件可以设置一个属性值 &#xff1a; android:includeFontPadding"false" 然后运行起来就会发现&…

【总结】Dinky学习笔记

概述 Dinky 是一个开箱即用、易扩展&#xff0c;以 Apache Flink 为基础&#xff0c;连接 OLAP 和数据湖等众多框架的一站式实时计算平台&#xff0c;致力于流批一体和湖仓一体的探索与实践 官网&#xff1a;Dinky 核心特性 沉浸式&#xff1a;提供专业的 DataStudio 功能&a…

喜好儿AI周报Weekly(第9期)CES2024 AI产业大爆发 | Rabbit R1 | 3D-Fauna | OLED屏幕 | Genie | MagicVideoV2 | Magnific

各位观众朋友们大家好&#xff01;我是被老板派去出差逛CES2024 拉斯维加斯消费电子展差点迷路回不来的阿喜。一起去看看这一周有什么新鲜事吧。 本期导读&#xff1a; 逛逛CES 2024消费电子展Rabbit R1人工智能设备三星AI机器人BallieLG无线透明OLED屏幕Portalgraph VR空间投…

【Linux】初识Linux及几个基本指令

Hello everybody!算算时间我已经有一个多月没有更新啦&#xff01;因为本专业是纺织工程&#xff0c;所以一直在复习应付期末考试\(0^◇^0)/。那好&#xff0c;废话不多说。让我们进入今天的主题&#xff01; 关于Linux系统可能很多同学不是很熟悉&#xff0c;有的人可能听过&…