使用final关键字防止Java中的覆盖

可以通过在方法中使用final关键字来防止方法重写。换句话说,最终方法不能被覆盖。

演示此过程的程序如下:

示例

class A {
   int a = 8;
   final void print() {
      System.out.println("Value of a: " + a);
   }
}
class B extends A {
   int b = 3;
   void print() {
      System.out.println("Value of b: " + b);
   }
}
public class Demo {
   public static void main(String args[]) {
      B obj = new B();
      obj.print();
   }
}

由于print()A类中的方法是最终方法,因此上面的程序会生成错误,因此无法被print()B类中的方法覆盖。错误消息如下:

Demo.java:15: error: print() in B cannot override print() in A