版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Yue510/article/details/82840405
重载(Overload)与重写(Override)
重载是方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无法以返回型作为重载函数的区分标准。重载Overloading是一个类中多态性的一种表现。
重写要求方法名、参数和返回值相同。重写是为了增强类的重用性和复用性、扩展性;重写是对类中方法的扩充,因为继承用的是父类的东西,重写则不仅得到父类的东西,同时也加入了自己的东西。
重写(覆盖)的规则
- 参数列表必须完全与被重写的方法相同,否则不能称其为重写而是重载。
- 返回的类型必须一致与被重写的方法的返回类型相同,否则不能称其为重写而是重载。
- 访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private)。
- 重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查异常。
重载的规则
- 必须具有不同的参数列表。
- 可以有不同的返回类型,只要参数列表不同就可以了。
- 可以有不同的访问修饰符。
- 可以抛出不同的异常。
重载和重写的特点:
- 重写(覆盖)Override特点
- 覆盖的方法的标志必须要和付给的方法的标志完全匹配,才能达到覆盖的效果
- 覆盖的方法的返回值必须和非得方法的返回一致
- 覆盖的方法所抛出的异常必须和被覆盖方法所抛出的异常一致,或者是其子类。
- 被覆盖的方法不能为private,否则在其子类众只是新定义了一个方法,并没有对其进行覆盖。
- 重载Overload特点
- 在使用重载时只能通过不同的参数样式,
- 不能通过访问权限、返回类型、抛出的异常进行重载
- 方法的异常类型和数目不会对重载造成影响
- 对于继承来说,如果某一方法在父类中是访问权限是priavte,那么就不能再子类对其进行重载,如果定义的话,也只是定义了一个新方法,而不会达到重载的效果。