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

继承1 2024_9_18

1.继承的基本用法

当需要继承的时候,我们就在派生类的后面加上一个权限+父类,这个权限可以是公有,保护和私有,后面就是继承的父类.此时,下面的stu这个派生类,也就可以使用Person里面的方法了.

2.继承基类成员访问方式的变化

当父类被继承到派生类的时候,此时会根据继承方式的不同,而导致父类的不同类型数据访问的方式也可能会发生改变.

现在我们来罗列一下这些情况:
首先是父类里面的private成员,当这种成员被继承后,不论是公有继承,保护继承还是私有继承,他的访问权限就只是private;如果是父类里面的protected成员,则如果是公有继承和保护继承,则访问权限就是protected,如果是私有继承,则访问方式是private;最后如果是父类的公有数据,如果公有继承则访问权限则是public,如果是保护和私有继承,则分别是protected和private.

到这里,我们就可以很明显的看出一点规律.比如私有类的任意继承方式都是不可见的.如果说继承的权限小于父类数据的原有权限,则访问方式就是继承权限,如果等于,那就是继承权限/父类原有权限,如果大于,则是父类原有权限.

3.基类和派生类的对象赋值转换

对于对象之间的赋值和相互转换,我们知道,意义相近的类型,是可以相互之间进行转换和赋值的.比如int和double之间可以相互转换,单参数构造函数支持隐式类型转换(在隐式类型的转换中会产生临时变量,临时变量具有常性) , 那么基类和派生类之间 , 也可以相互赋值和转换吗?

在public继承的情况下,每一个子类都可以看作一个特殊的父类(is-a概念).在这种情况下的赋值,他叫做切割/切片赋值.他们的赋值转换之间并不会产生临时变量,这叫做切片赋值兼容.怎么证明?

如果说这里会产生临时变量的话,那么临时变量具有常性,我们因此需要在Person前面加一个const,但是这里不加const他都没有报错,因此这里并不会产生临时变量.

不管是对象也好,还是引用,或是指针,都是可以相互转换的.

4.继承中的作用域

1.在继承体系中基类和派生类都有着自己独立的作用域,这也就意味着,在基类和派生类里面,函数名是可以相同的,也可以定义同名成员.

2.子类和父类中如果有同名成员,子类成员将屏蔽父类对同名成员的直接访问,这种情况叫隐藏,也叫重定义.

当基类和派生类都有一个叫_age的时候,此时调用st.Print()的话,就会就近原则的输出Stu的类.

一个在局部域,一个在全局域,则会有限输出局部域的变量.

局部域和全局域都会影响生命周期,访问.

在同一个作用域下,相同名字的函数会构成重载.

而对于这个父类和子类的构造函数和析构,如果是构造的话,则会先构造父类,后构造子类,而析构则会先析构子类,后析构父类


http://www.kler.cn/news/311051.html

相关文章:

  • kafka之路-01从零搭建环境到SpringBoot集成
  • leetcode 四数相加||
  • PostgreSQL - SQL语句1
  • 系统在哪些情况下会触发缺页中断
  • oracle pkg正在跑如何停止
  • A review on rumour prediction and veracity assessment in online social network
  • ROM和RAM的区别
  • 简易CPU设计入门:本CPU项目的指令格式
  • macOS平台编译MAVSDK源码生成mavsdk库与mavsdk_server服务可执行文件
  • 云曦2024秋考核
  • CSS 常用元素属性
  • 第四天旅游线路预览——从贾登峪到喀纳斯景区入口(贾登峪游客服务中心)
  • 【Axure教程】高级搜索
  • 黑马头条day2-预览
  • 链动321公排自动滑落模式小程序开发:商城系统
  • react 路由 react-router/react-router-dom
  • 链接升级:Element UI <el-link> 的应用
  • Java数据结构(十)——冒泡排序、快速排序
  • 【论文阅读】Slim Fly: A Cost Effective Low-Diameter Network Topology 一种经济高效的小直径网络拓扑
  • 【C++算法】模拟算法
  • 对 JavaScript 原型的理解
  • dll文件丢失怎么恢复?10种dll修复方法任你选,一次学会!
  • 算法题目复习(0909-0917)
  • Sqoop 数据迁移
  • git reflog
  • 机器学习:逻辑回归--过采样
  • 电巢科技携Ecosmos元宇宙产品亮相第25届中国光博会
  • Python实现 Socket.IO 的在线游戏场景
  • 51单片机-DS18B20(温度传感器)AT24C02(存储芯片) IIC通信-实验2-温度实时监测(可设置阈值)
  • 机器学习与深度学习之间的区别