1、方法重写的概念
方法重写 :子类中出现与父类一模一样的方法时(返回值类型,方法名和参数列表都相同)
,会出现覆盖效果,也称为重写或者复写。声明不变,重新实现。
class Fu{
public void method(){
System.out.println("Fu method");
}
}
class Zi extends Fu{
@Override
public void method() {
System.out.println("Zi method");
}
public void show(){
System.out.println("Zi show");
}
}
public class Test {
public static void main(String[] args) {
Zi zi = new Zi();
zi.method();
}
}
2、重写的注意事项
-
方法重写是发生在
子父类
之间的关系。 -
子类方法重写父类方法,
返回值类型
、方法名
和参数列表
都要一模一样
。 -
子类方法重写父类方法,必须要保证
子类权限大于等于父类权限
。- 访问权限从大到小:
public > protected > (默认) private
- 访问权限从大到小:
-
使用
@Override
注解,检验是否重写成功,重写注解校验!- 建议重写方法都加上这个注解,一方面可以
提高代码的可读性
,一方面可以防止重写出错
!
- 建议重写方法都加上这个注解,一方面可以
3、方法重写的使用场景
class Fu{
public void sport(){
System.out.println("父类 运动的方式跑步");
}
public void run(){
System.out.println("父类 第1圈");
}
}
class Zi extends Fu{
// 子类方法的实现和父类方法的实现完全不同
@Override
public void sport() {
System.out.println("子类 运动的方式游泳");
}
// 子类方法的实现要保留父类方法的功能,但要在父类功能的基础之上额外增加功能
@Override
public void run() {
// 让父类的方法执行=====复制父类的代码过来
super.run();// 调用父类的方法
// 额外增加的代码
System.out.println("子类 第2圈");
System.out.println("子类 第3圈");
System.out.println("子类 第4圈");
}
}
public class Test {
public static void main(String[] args) {
/*
方法重写的使用场景:
当父类的方法无法满足子类的需求的时候,子类就会去重写父类的方法
*/
// 创建子类对象
Zi zi = new Zi();
// 调用运动的方法
zi.sport();
// 调用跑步的方法
zi.run();
}
}
4、小结
-
方法重写:子类中出现与父类
一模一样
的方法时(返回值类型,方法名和参数列表都相同
) -
使用场景: 当父类的某个方法,子类有不同的实现,那么就可以重写该方法
- 假如是增加父类方法,则使用super.父类方法()
- 假如是完全重写父类方法,则不用super.父类方法()
-
建议: 校验方法重写或者
标识方法重写
,可以使用@Override注解