当我们尝试覆盖Java中超类的最终方法时,会发生什么?

子类不能重写 在超类中声明为final的 任何方法 。如果我们尝试覆盖超类的最终方法,则会在Java中收到错误消息。

实现方法覆盖的规则

  • 方法声明应与要重写的方法相同。

  • 在尝试覆盖之前,该类(子类)应扩展另一个类(超类)。

  • 子类永远不能覆盖超类的最终方法。

示例

class Car {
   public void brake() {
      System.out.println("brake() method of Car");
   }
   public final void accelerate() {
      System.out.println("accelerate() method of Car");
   }
}
public class BenzCar extends Car {
   public static void main(String[] args) {
      BenzCar benz = new BenzCar();
      benz.accelerate();
      benz.brake();
   }
   public void accelerate() {
      System.out.println("accelerate() method of Benz Car");
   }
}

在上面的例子,如果我们试图重写最后一个方法(加速()方法) 中的超类。编译器将抛出错误。因此,我们不会覆盖Java中超类的最终方法。

输出结果

overridden method is final