继承与多态

C++继承与多态 - 继承多态原理01 C++继承多态原理讲解 阅读详情

1.6 继承

继承使用基类型和导出类型的概念表示了这种类型之间的相似性。

导出类型可以对基类型添加或者修改,对基类型的修改也会反应到导出类型中。


一个基类型包含其所有导出类型所共享的特性和行为。可以创建一个基类型来表示系统中某些对象的核心概念,然后从基类型中导出其他类型来表示此核心可以被实现的各种不同方式。这种类型层次结构,可以直接从真实世界中对系统的描述过渡到用代码对系统的描述,大大简化了代码实现。


导出类不仅包括现有类型的所有成员(private成员除外),更重要的是它复制了基类的接口。也就是说,所有发送给基类对象的消息同时也可以发送给导出类对象。由于通过发送的消息的类型可知类的类型,所以导出类和基类具有相同的类型。通过继承产生了类型等价性。


有两种方法可以使基类与导出类产生差异:

一、直接在导出类中添加新方法;

二、改变现有基类的方法的行为,即覆盖(overriding)。


继承中的关系细分:

1. “是一个”关系(is-a): 只覆盖基类的方法(也称纯粹代替,或者代替原则);

2. “像是一个”关系(is-like-a): 添加了新方法,即扩展了接口。


1.7 伴随多态的可互换对象

在处理类型的层次结构上,经常把一个对象不当作它所属的特定类型来对待,而是将其当作其基类的对象来对待。这使得人们可以写出不依赖于特定类型的代码。这样通过导出新的子类型而轻松扩展原有设计,这也极大地改善了设计,同时降低了软件维护的代价。


OPP与非面向对象编程最重要的区别:

OOP编译器不可能产生传统意义上的函数调用,而非面向对象编程的编译器产生的函数调用会引起所谓的前期绑定。在OOP中,程序直到运行时才能够确定代码的地址,这也称为后期绑定。当向对象发送消息时,被调用的代码直到运行时才能确定。编译器确保被调用方法的存在,并对调用参数和返回值执行类型检查,但是并不知道将被执行的确切代码。


在Java中,动态绑定是默认的,在C++中,需要使用virtual关键字声明。


将导出类看作是它的基类的过程叫做向上转型(upcasting)。一个面向对象程序肯定会在某处包含向上转型,因为这正是将自己从必须知道确切类型中解放出来的关键。


Java通过一段特殊的代码,让编译器和运行系统处理了多态的细节,程序员不必知道详细调用过程。


1.8 单根继承结构

在Java中,所有的类最终都继承与object。


单一继承的好处:

1. 便于其他OOP语言内置;

2. 获取任何新类库时,方便兼容,提高了生产率;

3. 所有对象都可以很容易地在堆上创建,而参数传递也得到了极大的简化;

4. 使得垃圾回收器的实现变得容易的多(垃圾回收器是Java对C++的重要改进之一);

5. 给编程带来了更大的灵活性,尤其是系统级操作(如异常处理)。


注:以前对很多概念都是一知半解。希望同学们要多读经典书籍。

Spring Boot 构建war 部署到tomcat下无法在Nacos中注册服务 因此,当使用外部容器时,如此处的 Tomcat 来部署项目,AbstractAutoServiceRegistration 就不能监听到容器启动事件了,也就不会尝试向服务注册中心注册当前这个微服务,那么注册就失败了,并且也就没有异常信息了。自定义获取获取外部容器端口的方法, 然后监听应用启动事件,当应用被启动时,获取外部容器启动的端口号,然后将这个 port 设置到 NacosAutoServiceReigistration 中。在启动类同级目录,复制下面代码即可(不需要修改,直接构建war即可) 阅读详情

相关推荐

OGG故障指南:OGG-01163 Bad column length (xxx) specified for column

OGG-01163 Bad column length (xxx) specified for column AAA in table OWNER.TABLE, maximum allowable length is yyy

qqqyyy0422的博客 717

继承和多态的区别是什么?多态应用有几个条件,都分别是什么?

继承和多态的区别是什么?多态应用有几个条件,都分别是什么?

weixin_57471103的博客 3064

从Podfile到分享成功:ShareSDK小红书模块集成全流程实战(附视频分享代码)

本文详细介绍了iOS应用如何通过ShareSDK集成小红书分享功能的全流程,包括环境配置、SDK初始化、图片和视频分享实现,以及常见问题排查和性能优化策略。特别针对视频分享这一高频需求场景,提供了完整的代码示例和实战技巧,帮助开发者快速实现社交分享功能。

weixin_42540248的博客 226

【Java】—— 继承和多态

4. this是当前对象的引用,当前对象即调用实例方法的对象,super相当于是子类对象中从父类继承下来部分成员的引用。:也称为后期绑定(晚绑定),即在编译时,不能确定方法的行为,需要等到程序运行时,才能够确定具体调用那个类的方法。多态的概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同 的状态。可以访问子类和父类的,当子类成员和父类成员中名字相同时,则this访问得到的子类中的成员,而。先有父,再有子:子类对象构造时,需要先调用父类构造方法,然后执行子类的构造方法。

m0_74042853的博客 1367

ES快速入门,一篇就懂!

Elastic Search 入门前言什么是搜索为什么常用数据库不适合做搜索什么是Lucene什么是Elastic SearchES核心概念ES使用正常启动索引​增删改查ES增加常见问题:ES删除ES查询欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的

qq1592的博客 9310

告别外置电阻!揭秘MAX22201集成电流检测的5大设计优势(附PCB布局案例)

本文深入解析MAX22201集成电流检测技术在直流有刷电机驱动中的5大设计优势,包括BOM成本降低、PCB空间优化、动态性能提升等。通过与传统方案(如DRV8871+外置电阻)的实测对比,展示其在高精度电流检测、抗干扰能力和PCB布局简化方面的突破,并附有详细的PCB布局案例和配置指南。

weixin_29189377的博客 243

继承和多态的联系和区别?

区别:继承是子类使用父类的方法,而多态则是父类使用子类的方法。 联系: 1、  什么是继承,继承的特点? 子类继承父类的特征和行为,使得子类具有父类的各种属性和方法。 2、  为什么需要继承?什么时候应该继承? 使用继承可以有效实现代码复用,避免重复代码的出现。 3、  什么是多态? 相同的事物,调用其相同的方法,参数也相同时,但表现的行为却不同。 4、  为什么需要使用多态?多态的好处? 可以增强程序的可扩展性及可维护性,使代

天际的博客 5317

Z-Image Turbo LoRA训练全流程:从数据标注到模型部署的保姆级指南(附ai-toolkit配置)

本文提供了一份详尽的Z-Image Turbo LoRA模型训练全流程指南,涵盖从数据准备、智能标注、参数调优到最终模型部署与Z-Image集成的每个环节。重点解析了使用ai-toolkit训练整合包进行高效训练的核心技巧与避坑方法,旨在帮助用户稳定训练出高质量的专属角色模型。

weixin_29088655的博客 962

多态与继承的概念及区别

多态的概念: 多态指同一个实体同时具有多种形式。它是面向对象程序设计(OOP)的一个重要特征。 如果一个语言只支持类而不支持多态,只能说明它是基于对象的,而不是面向对象的。 多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。 多态就是允许方法重名 参数或返回值可以是父类型传入或返

GET知识不迷路,点赞评论加关注! 1万+

以太网硬件核心:MAC、PHY、MII与交换机原理与实战排查

计算机网络通信的基础依赖于一套完整的硬件协议栈。在OSI模型中,数据链路层和物理层是实现设备间可靠、高效数据传输的基石。其核心原理在于将上层数据包封装成帧,并通过特定的介质访问控制与物理信号转换机制进行传输。这一过程的技术价值在于为上层应用提供了透明、稳定的通信信道,是互联网和所有局域网通信的物理承载。在嵌入式系统、网络设备开发及运维等应用场景中,深入理解底层硬件交互至关重要。本文将聚焦于以太网硬件的两大核心组件:负责逻辑成帧与流量控制的MAC控制器,以及负责数模转换与链路协商的PHY芯片。它们通过MII、

dgqvhtlwq472235338的博客 421

【ROS】Nav2源码之nav2_collision_monitor(碰撞监测)详解

nav2_collision_monitor碰撞监视器是一个节点,为机器人提供了一个额外的安全级别。它使用来自传感器的数据,执行若干与避免碰撞相关的任务,绕过成本图和轨迹规划器,监测是否需要紧急停止或者减速。

郭老二 1455

【Java】重写、重载、多态、继承

继承是子类获得父类的成员,重写是继承后重新实现父类的方法。重载是在一个类里一系列参数不同名字相同的方法。多态则是用基类的引用指向子类的对象。         网上看到一个有趣的说法是:继承是子类使用父类的方法,而多态则是父类使用子类的方法。 下面的例子包含了这四种实现: class Triangle extends Shape {       public int getSides() {

qqwwsswww的专栏 660

YOLOv5 实现 10 种热力图可视化方式教程 | GradCAM XGradCAM ScoreCAM LayerCAM HiResCAM EigenCAM....

基于梯度计算类激活图,是最经典的热力图生成方法之一。Grad-CAM的改进版,通过引入梯度加权的方式,提高了热力图的定位精度。基于类别的得分计算类激活图,对噪声具有更强的鲁棒性。基于特定层的特征图计算类激活图,可以灵活选择不同的层进行分析。通过上采样将低分辨率的特征图恢复到原始图像大小,提高了热力图的分辨率。基于特征图的特征向量进行PCA降维,得到更简洁的热力图。对Grad-CAM的进一步改进,通过加权平均的方式,提高了热力图的质量。基于积分梯度的方法,可以解释模型对输入的每个特征的贡献。

weixin_39818775的博客 2374

C++中的继承与多态

本文深入探讨了C++中的类继承机制,解释了继承的基本概念、语法格式及其在工程中的应用。文章详细介绍了类继承的三种方式(public、protected、private)及其对访问权限的影响,强调了public继承的广泛适用性。此外,文章还讨论了基类与派生类之间的赋值兼容性、内存切片现象以及继承中的作用域问题。通过示例代码和图示,文章展示了继承中可能出现的特殊现象,如隐藏和覆盖,并提供了实际代码运行结果以加深理解。最后,文章总结了继承在C++编程中的重要性,强调了其在扩展类功能和提高代码复用性方面的优势。

m0_73987904的博客 2110

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Java—继承与多态

目录 1、继承 1.1、继承的定义 1.2、继承的使用场景 1.3、构造器 1.4、protected关键字 1.5、谨慎继承 2、多态 2.1、多态的定义 2.2、多态的实现方式 2.2.1、基于继承实现的多态 2.2.2、基于接口实现的多态 1、继承 1.1、继承的定义 继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。通过使用继承我们能够非常方便地复用以前的代码,能够大...

weixin_48112109的博客 5458

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

C++中的继承与多态_多态

C++中的继承与多态2 1. 多态的概念 1.1 概念 2. 多态的定义及实现 2.1多态的构成条件 ​编辑2.2 虚函数 2.3虚函数的重写 2.4 C++11 override 和 final 2.5 重载、覆盖(重写)、隐藏(重定义)的对比 3. 抽象类 3.1 概念 3.2 接口继承和实现继承 4.多态的原理 4.1虚函数表 4.2多态的原理 4.3 动态绑定与静态绑定 5.单继承和多继承关系的虚函数表 5.1 单继承中的虚函数表 5.2 多继承中的虚函数表 5

2301_79746169的博客 1623

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

C++多态与继承

C++多态与继承 C++中多态分为静态多态和动态多态, 静态多态:编译器在编译期间完成的,编译器根据函数实参的类型(可能会进行隐式类型转换),可推 断出要调用那个函数,如果有对应的函数就调用该函数,否则出现编译错误。动态多态:在程序执行期间(非编译期)判断所引用对象的实际类型,根据其实际类型调用相应的方法。实现动态多态的条件:1、必须是虚函数,派生类中必须重写虚函数 2、必须是通过基类

sigma_inf的博客 725

07.继承与多态

文章摘要: 本文主要介绍了Java中继承与多态的核心概念。在继承方面,详细讲解了继承的作用、语法规则、父子类成员访问方式、super关键字的使用、构造方法调用顺序以及访问权限控制等,强调继承能够实现代码复用并建立类之间的层次关系。多态部分则阐述了其概念、实现条件(继承、重写、父类引用),分析了向上转型与向下转型的应用场景及注意事项,并探讨了重写与重载的区别。此外,文章还对比了继承与组合的差异,指出组合在代码复用中的优势,并提醒避免在构造方法中调用可重写方法可能引发的风险。最后,总结了多态在降低代码复杂度和增

weixin_53212110的博客 973
上一篇: Java性能调优概述
下一篇: 欢迎使用优快云-markdown编辑器
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值