当前位置:网站首页>多态在代码中的体现
多态在代码中的体现
2022-06-30 20:53:00 【赛男丨木子丿小喵】
前几天写了一篇对多态的理解,主要是从不同的概念出发进行分析,这次主要针对其中一个概念进行分析
多态:指为不同数据类型的实体提供统一的接口。
如何用代码和这句话进行一一映射

”不同数据类型的实体“,首先类是自己写的一种数据类型,任何一个类都可以定义多个对象,这些对象的类型,就是这个类。
如图所示:
OperationAdd、OperationSub、OperationMul、OperationDiv四个类,就是四个不同的数据类型。
new OperationAdd().就是实例化一个OperationAdd的对象。同样代码中实例化了OperationSub、OperationMul、OperationDiv三个类的对象。也就是“不同数据类型的实体”。
接着我们看图中框中的四行代码,等号的左边都是oper,前面有进行声明,oper为Operation的变量

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

另外在思考这个问题时要两步走,首先是没有多态时,如上面的分析,一步步的分析,直到深刻剖析了多态概念中的每一个字,理解透彻了才有了多态的概念。(这里举个不是很贴合的例子,就好像1+1=2,上面分析的过程是再说1+1怎么推导出2,而不是上来就说2=2)
继续来看多态的概念
同一操作作用于不同的对象可以有不同的解释,产生不同的执行结果。

这里的“同一操作”是在父类中定义的虚方法。子类重写之后就会产生不同的执行结果,如图中截取的加法类和减法类。
最后再来看一下百度中对于多态的解释

“ 相同的消息”:指的是相同的参数,例如上面举得例子中的NumberA和NumberB。
“依据对象所属的类别”:就是前面说过的OperationAdd、OperationSub、OperationMul、OperationDiv四个类。
“引发不同的动作”:就是加减乘除运算。
这里举两个例子,只是想说在学习过程中,要思想上移,行动下移:
代码要与文字描述对应,这是思想上移
文字描述用代码实现,这是行动下移
边栏推荐
猜你喜欢

Go语学习笔记 - gorm使用 - 数据库配置、表新增 | Web框架Gin(七)

Study on lumiprobe modified triphosphate biotin-11-utp

Lumiprobe生物素亚磷酰胺(羟脯氨酸)说明书

微信小程序怎么实现圆心进度条

Huffman tree (I) basic concept and C language implementation

PHP obtains opcode and C source code

ICLR'22 Spotlight | 怎样度量神经网络权重中的信息量?

Adobe-Photoshop(PS)-脚本开发-去除文件臃肿脚本

Lvalue reference and lvalue reference

在线教育项目用户登录和注册
随机推荐
Peking University ACM problems 1003:hangover
变异系数法matlab代码[通俗易懂]
Huffman tree (I) basic concept and C language implementation
SQL必需掌握的100个重要知识点:创建和操纵表
注册设备监理师难考吗,和监理工程师有什么关系?
No "history of blood and tears" in home office | community essay solicitation
左值引用和右值引用
B_QuRT_User_Guide(31)
关于,奇安信检测代码漏洞,XSS系列解决
ICML2022 | 序列决策的效用理论
On the charm of code language
基于开源流批一体数据同步引擎ChunJun数据还原—DDL解析模块的实战分享
The newly born robot dog can walk by himself after rolling for an hour. The latest achievement of Wu Enda's first disciple
【等级测评师】等级测评师怎么报名?多少分及格?
报错FileSystemException: /datas/nodes/0/indices/gtTXk-hnTgKhAcm-8n60Jw/1/index/.es_temp_file:结构需要清理
How do I get the largest K massive data
Lumiprobe生物素亚磷酰胺(羟脯氨酸)说明书
go搭建服务器基础
Peking University ACM problems 1000:a+b problem
19.04 distributor