为什么构造函数在 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
广告
数据结构
网络
关系型数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
JavaScript
PHP