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

面向对象进阶 多态

面向对象进阶:多态

一、多态的定义

同类型对象表现出的不同形态

二、核心表现形式

父类类型 对象名=new子类类型();// 例:Animal animal = new Cat();

三、多态的三大前提

  1. 存在继承或实现关系(类继承类、类实现接口)

  2. 父类引用指向子类对象(满足上述表现形式)

  3. 存在方法重写

    四、使用场景与优势

    典型场景

    当需要处理多个同父类的子类对象时(如StudentTeacherAdministrator均继承自Person),可简化方法定义:

    // 无需为每个子类定义单独方法voidregister(Personp){p.show();// 自动调用对应子类的重写方法}

    核心优势

  • 减少代码冗余,提高扩展性

  • 父类型参数可接收所有子类型对象

    五、多态中成员的调用规则

    1. 成员变量

  • 编译期:检查父类中是否存在该变量(编译看左边)

  • 运行期:使用父类中的变量值(运行看左边)

    2. 成员方法

  • 编译期:检查父类中是否存在该方法(编译看左边)

  • 运行期:执行子类中重写的方法(运行看右边)

    六、多态的弊端与解决方案

    弊端

    父类引用无法直接调用子类的特有方法和属性

    解决方案:强制类型转换(向下转型)

    // 格式:子类类型 新对象名 = (子类类型) 父类引用;Parentp=newChild();Childc=(Child)p;// 强制转换后可调用Child的特有方法

    七、类型判断工具:instanceof

    作用

    判断对象是否属于指定类型(包括继承关系)

    基础用法

    Aa=newB();// B是A的子类booleanisB=ainstanceofB;// truebooleanisA=ainstanceofA;// true

    JDK14+新特性(模式匹配)

    if(ainstanceofBb){// 若判断成立,自动完成类型转换,可直接使用b调用B的方法b.childMethod();}
http://www.cnnetsun.cn/news/128777.html

相关文章:

  • 36、深入了解Sun RPC:原理、格式与应用分析
  • linux环境下python连接海康工业相机
  • 【LH-AQ7A80】
  • Kotaemon支持Kyverno策略吗?Kubernetes原生管控
  • 10、互联网浏览与安全隐私全攻略
  • Kotaemon判决书摘要提取:关键信息速览
  • Kotaemon能否用于股票行情解读?风险提示必不可少
  • 46、X 系统扩展与兼容性函数详解
  • nt!KiDispatchInterrupt函数中nt!KiQueueReadyThread和nt!SwapContext和KiQuantumEnd3个函数的关系
  • 31、Awk脚本语言快速参考指南
  • Kotaemon如何平衡速度与精度?检索-重排协同机制
  • 为什么越来越多开发者选择Kotaemon做知识问答系统?
  • Kotaemon能否用于专利检索?知识产权领域新应用
  • Kotaemon如何实现多模态输入?图文混合处理展望
  • 18、Web开发技术综合指南
  • Kotaemon能否用于竞品分析?市场情报提取实战
  • GPU资源紧张?Kotaemon轻量化部署方案来了
  • Kotaemon与Elasticsearch集成实战:打造超强检索后端
  • Kotaemon用户体验反馈分析:NLP情感挖掘
  • Kotaemon框架对比评测:在主流RAG方案中脱颖而出
  • 数据挖掘技术助力大数据领域创新发展
  • **YOLOv12图像去雾检测革命:基于UnfogNet的恶劣天气目标检测突破性解决方案**
  • Kotaemon与主流LLM兼容性测试报告出炉
  • 差模干扰(Differential Mode Interference, DMI)与共模干扰(Common Mode Interference, CMI)全面解析
  • Kotaemon PPT内容抽取:演示文稿知识化方案
  • Ventoy 全能启动盘制作指南:告别繁琐,拥抱高效
  • 期末复习-改错题
  • 小红书私域引流天花板:专属卡片 + 多号聚合,安全又高效
  • 机器学习(深度学习)与教育类比
  • pnpm 深度解析:下一代包管理工具的原理与实践