《继承与多态》学习总结
多态是本讲的核心,也是理解起来最费脑的部分。课件用一个生物学的比喻切入:北方玉米比南方长而粗——同一种族,环境不同,特性不同。落到代码里就是:相同的一条语句,在不同运行环境产生不同结果。
关键技术链条我梳理如下:
本质特征:父类(或接口)变量可以引用子类对象——Parent p = new Child();,子类对象可以被当成基类对象用。
类型转换规则:子类→父类自动;父类→子类要强制转换 (子类名),转错会抛 ClassCastException,可用 instanceof 预判。
同名方法时:调用哪个方法由对象的真实类型决定(这是多态的核心机制);而同名字段则会被"隐藏",且"子类被当父类用时,访问到的是父类的字段"——课件还幽默地提醒"开发中别定义同名字段,除非是考试"。
底层机制:编译器采用"滞后绑定(late bind)",编译期不知道调哪个方法,这也是学霸们可以用 javap 深入探究的方向。
我的感受:多态最打动我的是那句"可以让更一般的对象容纳更具体的对象"。它表面上抽象,但课件用"饲养员喂食"的例子一步步重构——从三个 eat() 方法,合并成一个 feedAnimal(Animal),再到接收 Animal[] 数组、Vector
浙公网安备 33010602011771号