Overload
在同一个类中,允许存在一个及以上的同名方法,只要他们的参数列表不同(参数的个数或者参数的类型不同)即可。
注意:方法重载与返回值类型、访问权限修饰符、和抛出的异常无关,也就是说,返回值类型,权限修饰符是可以改变的。
注意:重载是在本类中,与继承关系无关。也就是说可以在子类再重载。
被重载的方法必须改变参数列表(参数个数或类型或顺序不一样);
被重载的方法可以改变返回类型;
被重载的方法可以改变访问修饰符;
被重载的方法可以声明新的或更广的检查异常;
方法能够在同一个类中或者在一个子类中被重载。
无法以返回值类型作为重载函数的区分标准。
Overwrite
同名同参
方法的重写发生在继承关系中,子类对父类的方法进行改造扩充,这就是方法的重写。
1.方法名一致:重写的方法与被重写的方法的方法签名要一致
2.子类访问权限大于等于父类访问权限:子类重写方法的访问权限必须大于等于父类方法的访问权限,例如父类方法用public修饰,那么子类方法也必须用public修饰。
3.重写与被重写的方法不能被static与final修饰
4.异常:子类抛出的受检异常不能大于父类的受检异常(注意只针对受检异常,非受检异常没有此限制)
5.返回值类型:子类的方法的返回值类型可以小于等于父类的返回值类型
6.子类不能重写父类的private方法,添加@override注解会报错,因为这个方法是父类私有的子类不能访问,虽然子类继承了这个方法,但是子类只有拥有权没有使用权。如果去掉@override注解就不会再报错,所以说进行方法重写时要记得添加@override注解,让编译器帮助你做检查。