表格比较重写和重载
重写 | 重载 | |
参数列表 | 必须不变 | 必须改变(个数/类型) |
异常 | 可以减少抛出的异常/不抛出异常,不能抛出原本不抛出的异常 | 可以改变 |
规约 | 可以更强,不能更弱 | 可以改变 |
调用 | 运行时决定,根据运行时实际的对象类型(定义式右端)决定调用哪个方法 | 编译时决定,根据声明的类型(引用类型、定义式左端)和参数列表匹配决定调用哪个方法 |
有继承关系时 | 子类重写父类方法后,相当于覆盖,如果想调用父类方法,需要用super关键字 | 子类重载父类方法后,子类实际上继承了父类被重载的方法,调用时可以直接按照参数列表匹配的原则调用继承的被重载方法 |
重载示例:
class Animal {
public void eat() {}
}
class Horse extends Animal {
public void eat(String food) {}
}