为什么构造函数在 Java 中不能是最终 (Final) 的?


无论何时将方法设为最终 (final),都无法重写它。换言之,无法从子类向超类的最终方法提供实现。

换言之,将方法设为最终的目的是防止从外部(子类)修改方法。

在继承中,无论何时扩展一个类。子类都会继承超类的所有成员,但构造函数除外。

换句话说,在 Java 中无法继承构造函数,因此无法重写构造函数。

因此,在构造函数前写 final 是没有意义的。因此,Java 不允许在构造函数前使用 final 关键字。

如果尝试将构造函数设为最终,将会生成一个编译时错误,提示“此处不允许使用修饰符 final”。

示例

在以下 Java 程序中,Student 类有一个最终的构造函数。

 在线演示

public class Student {
   public final String name;
   public final int age;
   public final Student() {
      this.name = "Raju";
      this.age = 20;
   }
   public void display() {
      System.out.println("Name of the Student: "+this.name );
      System.out.println("Age of the Student: "+this.age );
   }
   public static void main(String args[]) {
      new Student().display();
   }
}

编译时错误

编译时,上述程序会生成以下错误。

Student.java:6: error: modifier final not allowed here
   public final Student(){
                ^
1 error

更新日期:2019 年 10 月 15 日

3K+ 次浏览

开启您的 职业

完成课程并获得认证

开始
广告