Whenever you make a method final, you cannot override it. i.e. you cannot provide implementation to the superclass's final method from the subclass.
i.e. The purpose of making a method final is to prevent modification of a method from outside (child class).
In inheritance whenever you extend a class. The child class inherits all the members of the superclass except the constructors.
In other words, constructors cannot be inherited in Java therefore you cannot override constructors.
So, writing final before constructors makes no sense. Therefore, java does not allow final keyword before a constructor.
If you try, make a constructor final a compile time error will be generated saying “modifier final not allowed here”.
Example
In the following Java program, the Student class has a constructor which is 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(); } }
Compile time error
On compiling, the above program generates the following error.
Student.java:6: error: modifier final not allowed here public final Student(){ ^ 1 error