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

Java多态大冒险:当动物们开始“造反”

欢迎来到Java多态的奇幻世界!在这里,动物们不再乖乖听话,而是各有各的脾气。准备好一起探索这个充满继承、重写和类型转换的动物园了吗?

第一章:继承王国里的“造反”运动

在我们的动物园里,有一位大家长——Animal老爷子。他定了两条规矩:

java

public void run() {System.out.println("动起来");
}
public void eat() {System.out.println("吃起来");
}

但孩子们长大了,都有自己的想法了!

Bird首先造反:“我才不要普通地动起来,我要飞飞飞!”
Cat也不甘示弱:“跑跑跑才是王道!”
Fish干脆躲水里:“游游游才是最优雅的!”

于是乎,重写(Override)大战开始了!每个子类都用自己的方式实现了run()方法。老爷子很无奈,但也只能接受——这就是多态的魔力!

第二章:父类的“面具游戏”

现在到了最神奇的部分——父类的引用指向子类对象:

java

Animal animal;
animal = new NewCat();
animal.run(); // 输出:小小猫跑跑跑

看见了吗?Animal打扮成NewCat的样子,但一开口还是猫叫!这就好比爸爸穿上了儿子的潮牌卫衣,看起来年轻了,但一开口还是那句“早点睡觉”!

第三章:强制类型转换的“认亲现场”

有时候动物们会玩过头,需要被强制认亲:

java

Animal animal3 = new NewFish();
if (animal3 instanceof Fish) {Fish fish1 = (Fish) animal3;System.out.println(fish1);
}

这就像是你看见一只穿着鱼外套的动物,你得先确认它真的是鱼,才能让它回到鱼缸里。如果不是鱼却硬要把它当鱼,就会得到一个ClassCastException——相当于动物大喊:“我不是鱼!我是鸟!放开我!”

第四章:final的“终极封印”

最后我们遇到了final关键字,它是Java世界里的“终极封印”:

java

static final int a = 10;
static final int[] arr = {5,3,5,2};

被final修饰的基本类型就像纹身——一旦刻上就不能改变(a=20?想都别想!)。而被final修饰的引用类型就像结婚证——你不能换人,但可以让人改变(arr[0]=200?这个可以!)。

final类像是“绝育”的类——不能有后代(继承)。final方法则是“家传秘方”——子类不能修改。

至于final防止指令重排序...这就好比妈妈对你说:“先写作业再玩手机!”——保证了顺序,避免了你偷偷玩手机还说作业写完了的混乱局面!

结语

多态就像是一场盛大的化妆舞会:Animal老爷子穿着各种子孙的服装,但本质上还是那个可爱的老爷子。有时候需要揭开面具看看真面目(强制转换),有时候需要一些不可改变的规则(final)。

记住:好的代码就像和谐的动物园,每种动物都有自己的特点,但又都在Animal的统筹之下。现在,让你的代码也“动起来”吧!(不过记得,Bird是“飞飞飞”,Cat是“跑跑跑”,Fish是“游游游”,可别搞混了!)

http://www.dtcms.com/a/350281.html

相关文章:

  • K8s高可用:Master与候选节点核心解析
  • STM32高级定时器-输出比较模式
  • 基于周期因子的资金流入流出预测
  • 区间和使用前缀和方法得到的时间复杂度
  • 2025 高教社杯全国大学生数学建模竞赛A题B题C题D题E题思路+模型+代码+论文(9.4开赛后第一时间更新)
  • AD画PCB时不小心移除的焊盘如何恢复
  • 玩转ChatGPT:Kimi深度研究功能
  • 模拟IC设计基础系列10-virtuoso常用快捷键整理(基础操作)
  • 驱动清理工具Driver Store Explorer(驱动程序资源管理器) 中文便携版
  • 重学前端010 --- 响应式网页设计 中级CSS
  • 【C++ 11 新特性】function 函数包装器的使用
  • Java程序员如何快速就业或跳槽?
  • Flask 之请求钩子详解:掌控请求生命周期
  • 基于Flask和AI的智能简历分析系统开发全流程
  • 护照阅读器应用
  • java18学习笔记
  • 【大模型本地运行与部署框架】Ollama的API交互
  • Vue Flow 设计大模型工作流
  • 深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)第六章知识点问答(22题)
  • 连锁零售排班难?自动排班系统来解决
  • DDR3入门系列(二)------DDR3硬件电路及Xilinx MIG IP核介绍
  • 基于LZO的无损数据压缩IP,高性能压缩速率32Gbps,压缩率50%,适用FPGAASIC
  • TDengine IDMP 应用场景:IT 系统监控
  • HIVE创建UDF函数全流程
  • 【URP】Unity 插入自定义RenderPass
  • 【学习记录】CSS: clamp、@scope
  • C++ extern 关键字面试深度解析
  • 大模型的思考方式
  • 引脚电平异常?以下或许是原因
  • Java 高可用实现方式