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

多态 向上转型

Collection<String> list = new ArrayList<>();

(1) 编译时类型 vs 运行时类型
  • 编译时类型(引用类型):Collection<String>
    • Java 编译器 只允许你调用 Collection 接口中定义的方法
    • 如果尝试调用 ArrayList 特有的方法(如 getFirst()removeFirst()),编译器会报错。
  • 运行时类型(实际对象):ArrayList<String>
    • 虽然底层实际是 ArrayList,但 编译器不允许你直接访问其特有方法,因为引用类型是 Collection
(2) 多态的核心规则
  • Java 的多态机制遵循 “编译看左边,运行看右边” 的原则:
    • 编译时:检查引用类型(左边),决定可用方法。
    • 运行时:调用实际对象(右边)的方法实现。

运行时:调用实际对象(右边)的方法实现。的含义

虽然变量 list 的引用类型是 Collection,但它的实际对象是 ArrayList。在 运行时,所有通过 list 调用的方法都会按照 ArrayList 的具体实现来执行,这就是 多态(Polymorphism) 的核心机制。

 运行时(Run Time)
  • 实际对象决定方法的具体实现
    尽管引用类型是 Collection,但底层实际对象是 ArrayList,所以 add() 方法的实现是 ArrayList 的版本
  • 示例
    Collection<String> list = new ArrayList<>();
    list.add("A"); // 实际调用的是 ArrayList 的 add() 方法
http://www.xdnf.cn/news/690733.html

相关文章:

  • YOLO人体姿态估计Pytorch推理ONNX模型推理
  • Android-GestureDetector学习总结
  • 微信小程序(uniapp)对接腾讯云IM
  • Vue 实例生命周期
  • 2025.5.28总结
  • 接口幂等性原理与方案总结
  • Avue表单个别字段实现全选的思路
  • 【Pandas】pandas DataFrame drop
  • Transformer核心技术解析LCPO方法:精准控制推理长度的新突破
  • Redis学习(十四)主从复制的工作原理、集群搭建(一主二从)
  • Android 云手机横屏模式下真机键盘遮挡输入框问题处理
  • [AD] Noxious LLMNR+DHCP+NTLMv2+Kerberos+SMB
  • 高精度导航 | RTK:2025年高精度导航算法综述,包括:原理,数据,公式,完整代码,开源代码链接
  • 网络协议之办公室网络是怎样的?
  • Mac M1编译OpenCV获取libopencv_java490.dylib文件
  • xcode 旧版本、历史版本下载
  • 【C/C++】高性能网络编程之Reactor模型
  • 网站缓存入门与实战:浏览器与Nginx/Apache服务器端缓存,让网站速度起飞!(2025)
  • git配置(1): 根据remote自动选择账号执行commit
  • MCU - SPI总线介绍 + W25Qx驱动设计
  • node-DeepResearch开源ai程序用于深入调查查询,继续搜索、阅读网页、推理,直到找到答案
  • SpringBoot项目快速打包与部署,War包⽅式打包部署与Jar包⽅式打包部署两种方式
  • 迁移学习模型构建指南(Python实现)
  • 云服务器系统盘满了,但是其他正常,是否可能是被攻击了
  • electron开发百度桌面应用demo及如何打包应用
  • SpringBoot 执行Lua脚本 服务端执行 减少性能损耗 优化性能 优化连接性能
  • linux使用服务添加一个开机启动脚本
  • 同一机器下通过HTTP域名访问其他服务器进程返回504问题记录
  • 服务器带宽线路的区别(GIA、CN2、BGP、CMI等)
  • Python教程(七)——错误和异常