系列文章目录
override 与overload
一、前言
在学习与编程的过程中经常会遇到这两个基本的概念:override与overload,这两个概念虽然很简单,但是经常会出现混淆。
所以在这里对这两个概念进行简单的总结。
二、override
override一般出现在子类继承之中,既包括接口的实现类,又包括实现类之间的继承关系。
其中对override有以下的要求与特点:
(1)子类中override方法的方法名、参数、返回值必须与父类相同。
(2)子类方法的规约不可以比父类方法的规约弱(前置条件,后置条件,抛出异常)。
(3)子类方法不能抛出比父类方法更多的异常,应该抛出相同的异常或者是异常子类(但子类方法可以不抛出异常)。
较为特殊的是:
(4)当方法被final修饰时,子类不能重写该方法 。
(5)当方法被private修饰时,只是在其子类中新定义了一个方法,并没有对其进行覆盖。
三、overload
overload为非参数多态(泛型化为参数多态),为同一方法提供了不同的处理方式不需要继承。
对overload有以下的要求与特点:
(1)参数类型、个数、顺序至少有一个不相同。
(2)不能重载只有返回值不同的方法名。
(3)不能通过访问权限、返回类型、抛出的异常进行重载;
(4)方法的异常类型和数目不会对重载造成影响。
override是发生在类层面,而overload发生在实例层面
override在不同类中,overload可以在同一类中