为什么构造函数在 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
广告