不想学习…

(一):大二上 面向对象课程 复习

先占位,复习中

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()
    • 这就是“动态绑定”。
  • 静态方法:编译运行都看左边。

    • 静态方法不属于对象,属于类,不具有多态性。

阅读全文