news 2026/10/17 8:42:56

多态 Java

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
多态 Java

我对多态的理解就是:完成某个任务,不同对象去做出现不同状态。

如何去实现这个效果,利用动态绑定加重写方法。

什么是动态绑定呢?与其相对应的是静态绑定。静态绑定的意思是编译时就已经知道要执行哪一个方法了,十分确定。而动态是在执行时候才知道。如图:

dog是animal的子类,对eat方法进行了重写。这个时候在main里实例化调用eat方法,其实后台编译的是Animal的eat()方法,而运行的是dog的eat方法。这里就发生了动态绑定。

以此类推,如果再有cat子类,bird子类.....只要实例化时,引用变量(animal)是父类类型,但是在堆里创建了一个子类Dog对象,就会触发动态绑定。实现的方法就会是子类里重写的方法。

用一个简单的话说白了就是:

调用普通方法:看骨子里真实 Dog; 访问变量、静态方法:只看外表 Animal。

那么问题来了。这个代码里还有子类自己的方法,父类是看不到的,那我这个引用变量可以访问子类独有的dark方法么?

答案是不行。因为编译阶段只看了Animal类,处理器不知道dark()方法,我们的结局方法是向下转型。代码如下:

Animal animal = new Dog(); Dog dog = (Dog) animal;

我一开始觉得这个代码就和有毛病似的,先是dog对象向上转型成Animal,又给向下转型成dog,为啥不一开始就直接创建Dog对象呢?实际上在现实中很有可能Animal有一大堆的子类,方法重写了一大堆,你也不知道返回值是啥类型的了。

if(a instanceof Dog){ Dog d = (Dog) a; //这时候向下转型就有意义了! d.dark(); }通过instanceof关键字证明是dog子类,然后对应向下转型就好了,就可以使用dog独有的方法了。

最后,什么无法实现多态。

第一构造方法不行,因为不能发生重写。

第二,静态方法不行,静态方法绑定在类里,编译什么执行什么,不能重写。

第三,final修饰的方法,和final修饰的类里的方法。final的作用就是禁止重写。

如果有问题,大佬一定要指出来救救小白谢谢大家。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/17 8:42:05

UniApp中rpx与rem深度对比:原理、换算与迁移实战

做UniApp开发的朋友,十有八九都会在官方文档或者同事的代码里碰到 rpx 这个东西。尤其当你之前做Web开发,习惯用 rem 控制字号和间距,第一次看到 rpx 的时候很难不想:这俩是不是一回事?能不能直接替换?哪个…

作者头像 李华
网站建设 2026/10/17 8:42:03

diagram-design:一种嵌入研发流程的视觉建模方法论

1. “diagram-design”不是画图软件,而是一套系统性视觉表达方法论很多人第一次看到“diagram-design”这个词,下意识会联想到Visio、draw.io或者Figma里的拖拽连线功能——这恰恰是最大的认知偏差。它根本不是一个工具名称,也不是某个开源库…

作者头像 李华
网站建设 2026/10/17 8:41:56

diagram-design实战:用diagrams.net画好架构图与流程图的完整方法论

写图这件事,看似简单,实则翻车率极高。我刚接触 diagram-design 这个项目时,想的只是找个工具把架构图画出来,结果发现真正难的不是工具操作,而是如何让一张图在表达复杂关系时依然清晰、可维护、让人一眼看懂。用过一…

作者头像 李华
网站建设 2026/10/17 8:41:32

基于YOLO11的飞鸟识别与图像分割系统实战:从训练到告警联动

1. 飞鸟检测这件事,为什么值得认真做先说个很多人都忽略的事实:机场净空区、光伏电场、风力发电场、甚至大型赛事场馆,最头疼的“空中威胁”往往不是无人机,而是鸟。鸟击事件一旦发生,轻则设备损坏、航班复飞&#xff…

作者头像 李华
网站建设 2026/10/17 8:40:35

中国天气网天气数据采集实战:从页面解析到结构化数据集

简介:这份资源围绕“中国天气网获取天气数据”这一典型开发任务展开,面向具备一定C#基础、希望在VS2008环境下练习网络请求与数据解析的开发者。内容涉及API接口调用、HTTP请求与响应处理、JSON/XML解析、API密钥注册管理,以及Windows Forms界…

作者头像 李华
网站建设 2026/10/17 8:40:28

RPA+AI智能流程自动化落地指南:从流程梳理到实施避坑

1. 从"流程自动化"到"智能化跨越",这个题到底在解什么先说结论:企业数字化转型喊了这么多年,真正卡住的从来不是技术,而是流程本身。RPA解决的是"手"的问题,AI解决的是"脑"的…

作者头像 李华