Java方法重写

148 阅读2分钟

在子类中如果创建了一个与父类中相同名称、相同返回值类型、相同参数列表的方法,只是方法体中的实现不同,以实现不同于父类的功能,这种方式被称为方法重写(override),又称为方法覆盖。当父类中的方法无法满足子类需求或子类具有特有功能的时候,需要方法重写。

  子类可以根据需要,定义特定于自己的行为。既沿袭了父类的功能名称,又根据子类的需要重新实现父类方法,从而进行扩展增强。

  在重写方法时,需要遵循下面的规则:

  参数列表必 须完全与被重写的方法参数列表相同。

  返回的类型必 须与被重写的方法的返回类型相同(Java1.5 版本之前返回值类型必 须一样,之后的 Java 版本放宽了限制,返回值类型必 须小于或者等于父类方法的返回值类型)。

  访问权限不能比父类中被重写方法的访问权限更低(public>protected>default>private)。

  重写方法一 定不能抛出新的检査异常或者比被重写方法声明更加宽泛的检査型异常。例如,父类的一个方法声明了一个检査异常 IOException,在重写这个方法时就不能抛出 Exception,只能拋出 IOException 的子类异常,可以抛出非检査异常。

  另外还要注意以下几条:

  重写的方法可以使用 @Override 注解来标识。

  父类的成员方法只能被它的子类重写。

  声明为 final 的方法不能被重写。

  声明为 static 的方法不能被重写,但是能够再次声明。

  构造方法不能被重写。

  子类和父类在同一个包中时,子类可以重写父类的所 有方法,除了声明为 private 和 final 的方法。

  子类和父类不在同一个包中时,子类只能重写父类的声明为 public 和 protected 的非 final 方法。

  如果不能继承一个方法,则不能重写这个方法。

java入门推荐: www.bilibili.com/video/BV1qL…