假期学习9
第9天:多态
对应章节:第5章
(1)今天做了什么: 多态的实现三条件:继承+方法重写+父类引用指向子类对象。核心口诀"编译看左边,运行看右边"——编译时类型决定可调用方法,运行时类型决定执行哪个版本。instanceof判断对象是否属于某类型,向下转型(父→子)前必须用它做安全检查,否则抛ClassCastException。练习:搭建Shape抽象类定义area()方法,Circle(πr²)和Square(边长²)分别重写。创建一个Shape数组混放不同子类对象,用循环统一调用area()——多态的精髓在于外部代码无需区分具体子类。
(2)明天准备做什么: 学习第5章后半部分——抽象类(abstract)和接口(interface),包括Java 8的默认方法和静态方法。理解两者的区别与适用场景:is-a关系用抽象类,行为契约用接口。练习设计USB接口让多个设备实现。
(3)遇到的问题: 用父类引用调用父类没有但子类有的方法时编译报错——验证了"编译看左边"的规则,必须向下转型后才能调用。直接(Circle)shape转型前没判断instanceof,当shape实际是Square时抛ClassCastException。解决:先if (shape instanceof Circle)再转型。多态无法访问子类特有的成员变量(只能访问方法),因为成员变量没有多态。
浙公网安备 33010602011771号