(一) 总结如下表:
函数名均相同 | 参数 | 返回值类型 | virtual有无 | 类别 |
父类子类间 方法为public 继承为public | 同 | 同 | 必须有 | override |
同 | 异 | 有 | 编译不通过 | |
同 | 均可 | 无 | hide | |
异 | 均可 | 无关 | hide | |
同一类内 | 同 | 异 | 无关 | 编译不通过 |
异 | 均可 | 无关 | overload |
(二) 几点说明
override(重写/覆盖)
[1] 覆盖要和virtual一起谈才有意义。
[2] 子类方法不能缩小父类方法的访问权限。
[3] 子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。
[4] 方法被定义为final不能被重写。
[5] 被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。