首先我们必须得把概念搞清楚, 方法的覆盖(override)是发生在子类和父类之间,子类的方法和父类具有相同的方法(方法名相同,参数相同,返回类型相同,子类中方法的访问权限只能相等或扩大,如果有异常抛出,异常的类型只能相同或越来越详细)。方法的重载(overload)发生在同一个类中,这些方法具有相同的名字,但参数的类型一定要不一样。 public class A { private void a(int i, int j) throws Exception {...} protected void b(String s) {...} }class B extends A { protected void a(int i, int j) throws IOException {...} public void b(String s) {...} public void b(String s, int j){...} }B中的a方法和第一个b方法覆盖了A中的a, b方法,B中的第b方法有两种定义方式,所以它被重载了。
override是父类方法的覆盖,方法名称一致,参数序列和类型完全一致,使用时只调用本类方法,即是覆盖了父类的方法
overload是同一个类中的多态,也叫编译时多态。
public class A {
private void a(int i, int j) throws Exception {...}
protected void b(String s) {...}
}class B extends A {
protected void a(int i, int j) throws IOException {...}
public void b(String s) {...}
public void b(String s, int j){...}
}B中的a方法和第一个b方法覆盖了A中的a, b方法,B中的第b方法有两种定义方式,所以它被重载了。