文章目录
覆盖重写的注意事项
1. 父子类之间的方法名称要相同,参数列表也要相同
- 名称不同或参数列表不同都不是重写操作,性质会变成 “继承” 而非重写;
- 为了有保障地完成重写操作,可以使用
@override
操作来帮忙验证所指定的 方法是否真的进行了重写。
- 对于指定要重写的方法,如果没有进行重写,那么
@override
就会报错;这是一个可选的安全检测手段
2. 子类方法的返回值范围一定要 <= 父类方法的返回值范围
- 父类的返回值类型范围大于子类返回值类型范围,没问题
- 父类的返回值类型范围小于子类返回值类型范围,有问题
- 父类返回值范围和子类返回值范围相同没问题。
3. 子类方法的权限,必须 >= 父类方法的权限
- 权限介绍:
public
>protected
>(default)
>private
- 其中,
default
不是关键字,而是什么都不写,如下图
- 其中,
- 下图是错误示范:
4. 写在后面
但是不用担心,绝大多数情况,我们在重写子类方法的时候,子类和父类的返回值范围都是一样的,子类和父类的权限也都是一样的。
覆盖重写的实例演示
- 对于重写的成员方法,如果想要使用其父类中已经存在的代码段,可以使用
super
关键字来获得。比如下图中,在重写show
方法的时候,通过super.show
就可以得到 父类中已经写好的show
方法,然后在此基础上可以进行再修改。