方法中重载与重写比较
名称 | 发生范围 | 方法名 | 形参列表 | 返回类型 | 修饰符 |
重载(overload) | 本类 | 必须一样 | 类型,个数或者顺序至少有一个不同 | 无要求 | 无要求 |
重写(override) | 父子类 | 必须一样 | 相同 | 子类重写的方法,返回的类型和父类返回的类型一致,或者是其子类 | 子类方法不能缩小父类方法的 访问范围 |
面试题:重载和重写的区别(结合上表)
重载
在同一类中
方法名相同,参数列表不同
返回值类型,修饰符,异常都不是判定重载对的标志
重写
访问修饰符:前大 子类访问修饰符>=父类访问修饰符
返回值类型:一样
方法名:一样
参数列表:一样(变量名可以不同)
异常:后小 子类抛出的异常要<=父类抛出的异常
(不同级别的方法不能相互重写)即静态的不能重写成非静态的 非静态的不能重写为静态方法
静态的方法无重写概念,此现象叫静态方法的隐藏