概述
在 Java 的多态中,有个结论可以直接引用:
- 对象类型看左边
- 静态方法和成员变量看左边
- 成员方法,编译看左边,运行看右边(子类可能重写)
- 如果有多个匹配的方法可以调用,优先调用参数最匹配的一个
调用顺序
现在有这么一段代码
Parent p = new Son();
// do something here....
- 首先看父类中是否存在可以匹配的方法
- 如果父类中不存在,那么编译出错
- 如果父类中存在 - 如果父类中有多个匹配的方法,则寻找最匹配的那个方法,例如 method(Integer a)和method(Number a),如果传入的参数是 Integer(1),则会匹配前面的方法
- 然后还要看子类是否重写这个方法 - 子类没有重写,则直接调用父类中的方法
- 子类重写了,则调用子类中的方法
 
 
- 如果父类中有多个匹配的方法,则寻找最匹配的那个方法,例如