多态 向上转型

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() 方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值