继承和多态是面向对象语言中一个比较重要的概念,本文以代码为例,简单描述java中有关多态,覆盖的基本特征。
示例代码:




































































解析:
- 代码中的继承关系为(C|D) -> B -> A
- a1.f(b), a1.f(c)和a1.f(d)比较容易理解
- 对象a2是类B的一个实例,而在类B中,方法f(B obj)被f(A obj)所覆盖,所以a2.f(b),a2.f(c)的输出如代码中的注释所示
- 正常的多态函数调用次序如下:
- this.f(o)
- super.f(o)
- this.f((super)o)
- super.f((super)o);