关于方法重写
方法重写的定义:子类中如果创建了一个与父类中相同名称、相同返回值类型、相同参数列表的方法,只是方法体中的实现不同,以实现不同于父类的功能,这种方式被称为方法重写(override),又称为方法覆盖。当父类中的方法无法满足子类需求或子类具有特有功能的时候,需要方法重写。
方法重写的要求:
两同两小一大:
1.方法名相同,参数列表相同
2.子类重写的方法返回值类型应比父类的小或者相等
3.子类方法声明抛出的异常类比父类方法声明抛出的异常类更小或相等
4.访问权限比父类中被重写方法的访问权限更大或相等(public>protected>default>private)
注意点:
- 重写的方法可以使用 @Override 注解来标识。
- 父类的成员方法只能被它的子类重写。
- 声明为 final 的方法不能被重写。
- 声明为 static 的方法不能被重写,但是能够再次声明。
- 构造方法不能被重写。
- 子类和父类在同一个包中时,子类可以重写父类的所有方法,除了声明为 private 和 final 的方法。
- 子类和父类不在同一个包中时,子类只能重写父类的声明为 public 和 protected 的非 final 方法。
- 如果不能继承一个方法,则不能重写这个方法。