01_方法的重写
一、方法的应用体现
方法的应用体现有2种
- 重载
- 在同一个类中
- 方法名相同
- 参数列表不相同
- 和方法返回值无关
- 重写
- 在父子类中
- 方法名相同
- 参数列表相同
- 方法返回值相同
二、概述
方法的重写就是子类对父类的方法逻辑进行重新编写,当然,这个方法得是子类可访问的实例方法
三、什么时候需要方法重写
当子类需要父类的功能,但父类的该功能不能完全满足自己的需求时,子类可以重写父类中的方法,这样,即沿袭了父类的功能,又定义了子类特有的功能
四、如何快速重写一个方法
声明不变,重新实现,重写时可以定义一个声明一样的方法,对方法体进行重新定义,如下,我有一个手机类,该类定义了一个方法就是打电话
public class Phone{
public void call(){
System.out.pringln("通话中");
}
}
一段时间过后,该方法已经不能完全满足我的需求了,比如,我希望增加视频通话功能,此时,就可以新建一个类(NewPhone
),继承自Phone
类,对打电话功能(call
)进行重写,如下
// NewPhone.java
public class NewPhone extends Phone{
public void call(){
System.out.pringln("打开摄像头...");
// 考虑到代码的复用性,可以使用super调用父类中的方法
super.call();
}
}
// Test.java
public class Test{
public static void main(String[] args){
newPhone.call();
// 打开摄像头...
// 通话中...
}
}
五、@Override注解
@Override
注解是放在重写后的方法上,作为重写是否正确的校验注解,加上该注解后如果重写错误,编译阶段会出现错误提示,建议重写方法都加上@Override
注解,代码安全,优雅,使用方式如下
// NewPhone.java
public class NewPhone extends Phone{
@Override
public void call(){
System.out.pringln("打开摄像头...");
// 考虑到代码的复用性,可以使用super调用父类中的方法
super.call();
}
}
六、注意事项
- 重写方法的名称和形参列表必须与被重写方法名称和参数列表一致
- 私有方法不能被重写
- 子类重写父类方法时,子类方法访问权限必须大于或者等于父类方法权限(缺省<
protected
<public
)