一.方法的重载
1.概念
方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。
调用重载方法时,Java编译器能通过检查调用的方法的参数类型和个数选择一个恰当的方法。
2.特征
(1)发生重载的方法名一定要相同
(2)发生重载的方法的参数表独一无二
1)参数个数不相同,就不用你考虑其参数类型
2)参数个数相同,参数类型不能完全相同
(3)发生重载的方法的返回类型、修饰符可以相同,也可不同。
3.注意
仅根据返回值的不同是不能进行方法重载的。
因为在使用重载的时候,遍历器是通过检查方法的参数类型和个数来确定哪个方法的,并不能通过返回值来进行判断。
二.方法的重写
1.概念
在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。
但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。
方法重写又称方法覆盖。
若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。
如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。“super.方法名”
2.特征
(1)发生方法重写的两个方法返回值、方法名、参数列表必须完全一致
(2)子类抛出的异常下不能超过父类相应方法抛出的异常
在继承过程中如果父类当中的方法抛出异常,那么在子类中重写父类的该方法时,也要抛出异常,而且抛出的异常不能多于父类中抛出的异常(可以等于父类中抛出的异常)。
换句话说,重写方法一定不能抛出新的检查异常,或者比被重写方法声明更加宽泛的检查型异常。
(3)子类方法的访问级别不能低于父类相应方法的访问级别
如果定义父类的方法为public,在子类定义为private,程序运行时就会报错。
3.注意
父类中的方法并不是在任何情况下都可以重写的,当父类中方法的访问权限修饰符为private时,该方法只能被自己的类访问,不能被外部的类访问,在子类是不能被重写的。
三.重载与重写的区别与联系
重写的时候对于重写的方法有对异常和访问级别的限制,重载没有任何相应限制。