一、重载(Overload)
重载主要发生在同一个类的同名方法之间。如果同一个类中包含了两个或两个以上方法的方法名相同,但形参列表不同,则被称为方法重载。(两同一不同)
总结:
1.重载要求同名方法的参数列表不同(参数类型、参数个数、甚至是参数顺序);
2.方法返回值类型、修饰符与方法重载没有任何关系;
3.重载的时候,返回值类型可以相同也可以不同。无法以返回值类型作为重载函数的区分标准。
二、重写(Override)
重写发生在子类和父类的同名方法之间。方法的重写要遵循的规则:
1.方法名相同、形参列表相同;
2.子类方法返回值类型应比父类方法返回值类型更小或相等,子类方法声明抛出的异常类应比父类方法声明抛出的异常类更小或相等;
3.子类方法的访问权限应比父类方法的访问权限更大或相等;
4.覆盖方法和被覆盖方法要么都是类方法,要么都是实例方法,不能一个是类方法,一个是实例方法;
5.当子类覆盖了父类方法后,子类的对象将无法访问父类被覆盖的方法,但可以在子类方法中调用父类被覆盖的方法(使用super调用被覆盖的实例方法或父类类名调用被覆盖的类方法);
6.子类无法重写父类中具有private访问权限的方法,因为该方法对子类是隐藏的,因此子类无法访问该方法,自然也就无法重写该方法了。
如果子类中定义了一个与父类private方法具有相同的方法名、相同的形参列表、相同的返回值类型的方法,依然不是重写,只是子类中重新定义了一个新方法。