方法的重写与重载总结:
重写(Override) : 发生在子类和父类之间 , 重写即子类将父类中的方法重写了一遍.
若子类中的方法与父类中的某一方法具有相同的方法名,返回值类型和参数表列,则新方法覆盖原方法 . 如需父类中的方法需要用super关键字.
重载(Overload) : 让类以**统一的方式处理不同类型数据**的一种方法 . 必须有不同的参数表列 .
性质 | 重写 | 重载 |
---|---|---|
函数名/参数 | 函数名与参数等是完全相同的 | 多个同名函数存在时,具有不同的参数个数/类型 (方法名相同,参数个数、次序、类型不同) [多态的一种表现] . //如果参数的个数、类型、次序都相同,方法名也相同,仅返回值不同,则无法构成重载 |
返回值类型 | [子类]返回值的类型必须与父类(被重写的)方法类型一致 | 重载对返回值 没有要求,同不同都可 |
权限部分 | 子类函数的访问修饰权限大于等于父类的 | 可以有不同的访问修饰符 |
异常部分 | 重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常 | 可以抛出不同的异常[方法的异常类型数目不会对重载造成影响] |
方法被定义为final不能被重写 |