为什么 Java 中的构造函数不能是 final?
javaobject oriented programmingprogramming更新于 2024/8/26 11:34:00
每当您将方法设为 final 时,您都无法覆盖它。即您无法从子类中提供对超类的 final 方法的实现。
即,将方法设为 final 的目的是防止从外部(子类)修改方法。
在继承中,每当您扩展一个类时。子类将继承超类的所有成员,但构造函数除外。
换句话说,构造函数在 Java 中不能被继承,因此您不能覆盖构造函数。
因此,在构造函数前写 final 是没有意义的。因此,java 不允许在构造函数前使用 final 关键字。
如果您尝试将构造函数设为 final,则会产生编译时错误,提示"此处不允许修饰符 final"。
示例
在下面的 Java 程序中,Student 类有一个 final 构造函数。
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