多态在代码中的体现

简介: 多态在代码中的体现

前几天写了一篇对多态的理解,主要是从不同的概念出发进行分析,这次主要针对其中一个概念进行分析

多态:指为不同数据类型的实体提供统一的接口。

如何用代码和这句话进行一一映射

”不同数据类型的实体“,首先类是自己写的一种数据类型,任何一个类都可以定义多个对象,这些对象的类型,就是这个类。


如图所示:


OperationAdd、OperationSub、OperationMul、OperationDiv四个类,就是四个不同的数据类型。


new OperationAdd().就是实例化一个OperationAdd的对象。同样代码中实例化了OperationSub、OperationMul、OperationDiv三个类的对象。也就是“不同数据类型的实体”。


接着我们看图中框中的四行代码,等号的左边都是oper,前面有进行声明,oper为Operation的变量




外界调用的时候,只需要调用oper,也就是只提供了一个对外的接口,至于方法GetResult具体执行什么内容,就看传进去的参数是“+-*/”中具体的哪一个了。




另外在思考这个问题时要两步走,首先是没有多态时,如上面的分析,一步步的分析,直到深刻剖析了多态概念中的每一个字,理解透彻了才有了多态的概念。(这里举个不是很贴合的例子,就好像1+1=2,上面分析的过程是再说1+1怎么推导出2,而不是上来就说2=2)


继续来看多态的概念


同一操作作用于不同的对象可以有不同的解释,产生不同的执行结果。


f280cae64baa544444729edee57b8e7d.jpg


这里的“同一操作”是在父类中定义的虚方法。子类重写之后就会产生不同的执行结果,如图中截取的加法类和减法类。


最后再来看一下百度中对于多态的解释



a0d712267fe193f136e6e8ba43988a7a.jpg

“ 相同的消息”:指的是相同的参数,例如上面举得例子中的NumberA和NumberB。


“依据对象所属的类别”:就是前面说过的OperationAdd、OperationSub、OperationMul、OperationDiv四个类。


“引发不同的动作”:就是加减乘除运算。


这里举两个例子,只是想说在学习过程中,要思想上移,行动下移:


代码要与文字描述对应,这是思想上移


文字描述用代码实现,这是行动下移


相关文章
|
SQL 存储 Java
原生Jdbc获取库、表、字段
原生Jdbc获取库、表、字段
284 0
|
3月前
|
运维 监控 Java
Linux常用命令行大全:14个核心指令详解+实战案例
在服务器管理与开发运维领域,Linux 指令是构建技术能力体系的基石。无论是日常的系统监控、文件操作,还是复杂的服务部署与故障排查,熟练掌握指令的使用逻辑都是提升工作效率的核心前提。然而,对于初学者而言,Linux 指令体系往往呈现出“参数繁多易混淆”“组合使用门槛高”“实际场景适配难”等痛点——例如 ls 命令的 -l 与 -a 参数如何搭配查看隐藏文件详情,grep 与管道符结合时如何精准过滤日志内容,这些问题常常成为技术进阶的阻碍。
|
3月前
|
敏捷开发 Dubbo Java
需求开发人日评估
本文介绍了敏捷开发中工时评估的重要方法——“人日评估”,即根据开发人员负责模块的工作量估算所需时间。内容涵盖人日定义、开发各阶段(开发、自测、联调、测试、发布)的人日参考值,以及常见需求如Excel导入导出、远程服务调用等的评估示例,帮助团队更合理地规划开发周期。
|
设计模式 Java
【设计模式】工厂模式(定义 | 特点 | Demo入门讲解)
【设计模式】工厂模式(定义 | 特点 | Demo入门讲解)
371 2
|
Java 测试技术 Maven
Maven clean 提示文件 java.io.IOException
在使用Maven进行项目打包时,遇到了`Failed to delete`错误,尝试手动删除目标文件也失败,提示`java.io.IOException`。经过分析,发现问题是由于`sys-info.log`文件被其他进程占用。解决方法是关闭IDEA和相关Java进程,清理隐藏的Java进程后重新尝试Maven clean操作。最终问题得以解决。总结:遇到此类问题时,可以通过任务管理器清理相关进程或重启电脑来解决。
|
存储 监控 负载均衡
Elasticsearch 集群副本
【8月更文挑战第24天】
334 13
|
存储 安全 算法
Spring Security系列教程06--实现HTTP摘要认证
前言 在前面的2个章节中,一一哥 带大家认识了Spring Security中的第基本认证与表单认证 2种认证方式,其中表单认证是Spring Security默认的认证方式,也是开发时最常用的认证方式。有的小伙伴会问,不是还有第3种认证方式吗?对的,还有第三种摘要认证方式!在本文中,我们来学习了解一下HTTP摘要认证。 但是对于摘要认证,我们仅做了解即可,因为这种认证方式仅比基本认证稍微安全一点,开发时用的也不是很多。抱着艺多不压身的心态,我们多了解一点反正也没坏处。
741 0
|
安全 前端开发 Java
Spring Security系列教程05--实现Form表单认证
前言 在上一章节中,一一哥 带大家认识了Spring Security中的第一种认证方式,但是这种基本认证的方式,UI效果不漂亮,安全性也很差,好像一无是处的样子,那么有没有更好一点的认证方式呢?有的!接下来我给大家介绍一个新的认证方式,即Form表单认证。 一. Form表单认证 1. 认证方式 我们从前文中得知,Spring Security中的认证方式可以分为HTTP层面和表单层面,常见的认证方式如下: • ①. HTTP基本认证; • ②. Form表单认证; • ③. HTTP摘要认证;
675 0
|
安全 Java 数据库
第3章 Spring Security 的用户认证机制(2024 最新版)(上)
第3章 Spring Security 的用户认证机制(2024 最新版)
742 0
|
设计模式 Java C++
设计模式之适配器模式:接口对接丝般顺滑(图代码解析面面俱到)
设计模式之适配器模式:接口对接丝般顺滑(图代码解析面面俱到)