Overload&Override
overload—–重载
方法的重载就是在一个类中,可以定义多个有相同名字,但参数不同的方法。调用时,会根据不同的参数表选择对应的方法。
规 则:两同三不同
两 同:同一个类、同一方法名
三 不 同:参数类型、参数个数、参数排列顺序不同
注:参数名称不同、参数返回值不同无法构成方法的重载。如果只有方法参数名称不同或者方法返回值不同,在你调用方法时你输入的实参会在参数列表中对应多个方法,无法使编译器知道你到底调用的是哪个方法。
代码说明如下:
注释:java中允许任何方法重载,包括构造方法。因此,要完整的描述一个方法,需要指出方法名以及参数类型,这个叫做方法的签名(signature)。
Override-----重写
在子类中根据需要对从父类中继承来的方法进行修改,这叫做方法的重写,也称为方法的覆盖。重写方法只能存在于具有继承的关系中。
注意事项:
(1) 子类不能重写父类中被关键字final修饰的方法(包括private方法,因为private方法是隐式final的)。
(2) 重写方法必须与被重写方法具有相同的方法名称、参数列表和返回值类型。
(3) 重写方法不能使用比被重写方法更严格的访问权限(由于多态的存在)。重载可以。
(4) 重写方法不能抛出新的异常或者比被重写方法申明更加宽泛的检查性异常,可以抛出非检查型异常。如:父类的一个方法申明了一个检查异常IOException,在重写这个方法的时候,重写方法不能抛出Exception,只能抛出IOException或其子类异常,也可以抛出非检查型异常。重载可以抛出不同的异常。
方法的重载与方法的重写没关系!