《继承与多态》学习总结

多态是本讲的核心,也是理解起来最费脑的部分。课件用一个生物学的比喻切入:北方玉米比南方长而粗——同一种族,环境不同,特性不同。落到代码里就是:相同的一条语句,在不同运行环境产生不同结果。

关键技术链条我梳理如下:

本质特征:父类(或接口)变量可以引用子类对象——Parent p = new Child();,子类对象可以被当成基类对象用。
类型转换规则:子类→父类自动;父类→子类要强制转换 (子类名),转错会抛 ClassCastException,可用 instanceof 预判。
同名方法时:调用哪个方法由对象的真实类型决定(这是多态的核心机制);而同名字段则会被"隐藏",且"子类被当父类用时,访问到的是父类的字段"——课件还幽默地提醒"开发中别定义同名字段,除非是考试"。
底层机制:编译器采用"滞后绑定(late bind)",编译期不知道调哪个方法,这也是学霸们可以用 javap 深入探究的方向。
我的感受:多态最打动我的是那句"可以让更一般的对象容纳更具体的对象"。它表面上抽象,但课件用"饲养员喂食"的例子一步步重构——从三个 eat() 方法,合并成一个 feedAnimal(Animal),再到接收 Animal[] 数组、Vector 容器——让我直观体会到:多态的终极价值是需求变化时,需要改动的代码最少。那两个"较"字(修改地方较少、影响较小),程序越大优势越明显。

posted @ 2026-11-07 10:11  gcdoublebest  阅读(3)  评论(0)    收藏  举报