如何在 Java 中防止方法被覆盖?


继承可以定义为一个类(父类/超类)获取另一个类(子类/子类)的成员(方法和字段)的过程。

如果两个类通过继承相关联。如果超类和子 类包含相同的方法(相同名称和参数),当我们使用子类对象调用该方法时,将执行子类的方法。这种机制被称为覆盖。

重写 final 方法

一旦你将一个方法声明为 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 中编译相同的程序,你将收到以下错误 -

因此,如果你想防止一个方法被覆盖,你只需要将其声明为 final 即可。

更新于: 2020 年 7 月 2 日

274 次浏览

开启你的 职业 生涯

完成课程,获得认证

开始
广告