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

javaobject oriented programmingprogramming更新于 2025/7/5 18:52:17

在超类中声明为final的任何方法都不能被子类覆盖。如果我们尝试覆盖超类的final 方法,我们将在 Java 中收到错误。

实现方法覆盖的规则

  • 方法声明应与要覆盖的方法的声明相同。
  • 类(子类)应在尝试覆盖之前扩展另一个类(超类)。
  • 子类永远不能覆盖超类的 final 方法。

示例

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");
   }
}

在上面的例子中,如果我们尝试覆盖超类的最终方法(accelerate() 方法),编译器将抛出错误。因此,我们不会在 Java 中覆盖超类的最终方法。

输出

overridden method is final

相关文章


有用资源