我们可以在 Java 中重写 final 方法吗?


覆写是实现多态性的机制之一。当我们有两个类时,其中一个类使用扩展关键字继承另一个类的属性,这两个类具有相同的方法(包括参数和返回类型,如sample),情况就是如此。

由于它是继承。如果我们实例化子类,超级类的成员的副本就会在子类对象中创建,因此子类可以使用这两种方法。

当我们调用此方法 (sample) 时,JVM 基于用于调用该方法的对象调用相应的方法。

覆写 final 方法

不,你无法在 Java 中覆写 final 方法。如果你尝试这样做,它会生成一个编译时错误,表明

示例

class Super{
   public final void demo() {
      System.out.println("This is the method of the superclass");
   }
}
class Sub extends Super{
   public final void demo() {
      System.out.println("This is the method of the subclass");
   }
}

编译时错误

Sub.java:7: error: demo() in Sub cannot override demo() in Super
   public final void demo() {
          ^
   overridden method is final
1 error

如果你尝试在 eclipse 中编译同一个程序,你会得到以下错误 -

更新日期:30-6月-2020

1 千+ 浏览量

开启你的 职业生涯

完成课程以取得认证

开始学习
广告