(一):大二上 面向对象课程 复习
先占位,复习中
Lesson 8 完善类的设计
感觉是又总结了一遍前面的知识,主要想说如何设计代码
1. 多态
多态简而言之就是“同一个接口,使用不同的实例而执行不同操作”。 多态存在的三个必要条件:
- 继承 (Inheritance):必须有父子类关系。
- 覆盖 (Override):子类必须重写父类的方法。
- 向上转型 (Upcasting):父类引用指向子类对象(
Father f = new Son();)。
核心考点(出现n遍了):
成员变量(字段):编译运行都看左边。
- 如果你写
Father f = new Son();,然后调用f.age。不管Son类里有没有定义age,系统只看Father类里有没有age。如果有,取父类的值。 - 原因:Java 中字段没有多态性,字段是静态绑定的。
- 如果你写
成员方法(非静态):编译看左边,运行看右边。
- 你调用
f.eat()。编译时,编译器检查Father类有没有eat(),没有就报错(编译失败)。运行时,JVM 会去调用Son类重写过的eat()。 - 这就是“动态绑定”。
- 你调用
静态方法:编译运行都看左边。
- 静态方法不属于对象,属于类,不具有多态性。