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

[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.xdnf.cn/news/12107.html

相关文章:

  • 电脑频繁黑屏怎么办
  • c++ STL 仿函数和适配器(算法常用)
  • 【Python金融笔记】加载数据与可视化
  • Appium+python自动化(八)- 认识Appium- 下章
  • JVM 内存溢出 详解
  • 数据结构第八章(一) 插入排序
  • DeviceNET从站转EtherNET/IP主站在盐化工行业的创新应用
  • 中国城市建成区数据集(1992-2020)V1.0
  • DataStreamAPI实践原理——快速上手(实操详细版)
  • skynet monitor线程的作用
  • Spring Boot 从Socket 到Netty网络编程(上):SOCKET 基本开发(BIO)与改进(NIO)
  • 大数据学习(130)-zookeeper
  • MP4文件声音与视频分离
  • 《高等数学》(同济大学·第7版)第一章第六节极限存在准则 两个重要极限
  • 高速PCB设计中圆弧布线是否必要
  • 实施规模化敏捷需优先解决哪些组织文化障碍?
  • 华为云Flexus+DeepSeek征文|基于华为云MaaS平台的DeepSeek大模型与云服务单机+CCE高可用部署实践
  • 结构型设计模式之Proxy(代理)
  • JSON基础知识
  • Vue前端篇——Vue 3的watch深度解析
  • 本地IP配置
  • 一文了解 GPU 服务器及其在数据中心中的角色
  • 从上下文学习和微调看语言模型的泛化:一项对照研究 -附录
  • BERT:让AI真正“读懂”语言的革命
  • 为UE5的Actor添加能够读写姿态的功能
  • 【仿生机器人】刀剑神域——爱丽丝苏醒计划,需求文档
  • 【华为云学习与认证】以华为云物联网为基座的全栈开发(从物联网iot平台模块到应用展示、数据分析、机器学习、嵌入式开发等)的系统性学习与认证路线
  • 高防服务器价格高原因分析
  • 2024年第十五届蓝桥杯青少组c++国赛真题——快速分解质因数
  • 某校体育场馆结构自动化监测