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

[Java 基础]面向对象-多态

多态是指同一个行为在不同对象上具有不同的表现形式。

比如:叫是一个方法,对于不同的动物,叫声是不一样的,但是基本所有的动物都会叫。

要实现多态的效果,需要:

  • 继承
  • 重写
  • 父类引用指向子类对象:Parent p = new Child(),这个是 “向上转型”

下面是代码例子:

class Animal {void makeSound() {System.out.println("动物发出声音");}
}class Dog extends Animal {void makeSound() {System.out.println("狗:汪汪!");}
}class Cat extends Animal {void makeSound() {System.out.println("猫:喵喵!");}
}spublic class TestPolymorphism {public static void main(String[] args) {Animal a1 = new Dog(); // 向上转型Animal a2 = new Cat();a1.makeSound(); // 输出:狗:汪汪!a2.makeSound(); // 输出:猫:喵喵!}
}

:::danger
虽然变量类型是 Animal,但运行时会根据实际对象类型(Dog 或 Cat)调用正确的方法,这就是动态绑定。

:::

合理的使用多态,能增强代码的可扩展性强,新增子类时,原有代码几乎不需要改动。

http://www.lqws.cn/news/137503.html

相关文章:

  • 关于物联网的基础知识(一)
  • 职坐标IT教育物联网全栈开发实战:传感器到云平台全链路
  • ‌RF Choke(射频扼流圈)
  • 第十三节:第二部分:集合框架:Map系列集合:概述、常用方法
  • thymeleaf直接调用Spring Bean中定义的方法
  • Python 开发效率秘籍:PyCharm、VS Code 与 Anaconda 配置与实战全解
  • 【会员专享数据】1960—2023年我国省市县三级逐年降水量数据(Shp/Excel格式)
  • UDP包大小与丢包率的关系:原理分析与优化实践
  • 解决el-cascader组件下拉选项过长,数据回显无法换行显示的问题
  • JavaScript中判断两个对象是否相同(所有属性的值是否都相同)
  • 电商接口计费标准是什么?
  • 数据“出国”需办“签证”: 如何申请数据出境安全评估?
  • 【二分图 图论】P9384 [THUPC 2023 决赛] 着色|普及+
  • Vue Router 导航方法完全指南
  • ShardingSphere 如何解决聚合统计、分页查询和join关联问题
  • DeepSeek+SpringAI实现流式对话
  • Python Day43
  • 脑机新手指南(四):新手小白入门 BCI-从认识到初体验(下)
  • Fluence推出“Pointless计划”:五种方式参与RWA算力资产新时代
  • 极客大挑战 2019 EasySQL 1(万能账号密码,SQL注入,HackBar)
  • Linux 云服务器部署 Flask 项目(含后台运行与 systemd 开机自启)
  • C#Winform中DevExpress下的datagridview 特定列可编辑,其他列不可编辑
  • 链表题解——环形链表【LeetCode】
  • iOS上传应用包错误问题 “Invalid bundle. The “UIInterfaceOrientationPortrait”“
  • Java时间API终极指南
  • 【输入URL到页面展示】
  • django paramiko 跳转登录
  • 【使用 Loki + Promtail + Grafana 搭建轻量级容器日志分析平台】
  • grafana 批量视图备份及恢复(含数据源)
  • 【更新中】(文档+代码)基于推荐算法和Springboot+Vue的购物商城