Why constructor can not be final, static or abstract in Java?

By | December 20, 2023

What is a constructor in Java?

In Java, constructors are a special type of method that is used to initialize the objects. It has the same name as that of a class and does not have a return type, not even void. Constructors are automatically called as soon as objects get created and set the initial value to the object’s attributes or perform any other setup required for the object to function properly. In this tutorial, we learn why a constructor can not be final, static or abstract in Java.

Note: In Java, the final keyword is used to restrict the inheritance, modification, or extension of an entity (class, method, or variable).

Can Constructor be final in Java?

No, constructors cannot be final in Java. Constructor is a type of method, and adding a final keyword to method means we are trying to restrict it from getting overridden. As we know, in Java, constructors cannot be overridden or modified, so adding a final keyword to them makes no sense. If we declare the final keyword with the constructor, we will get a compilation error as Illegal modifier for the constructor in type class-name; only public, protected & private are permitted.

constructor can not be final, static or abstract in Java
Fig 1- Constructor cannot be final in Java
Note: In Java, the static keyword is used to define class-level members, which means they belong to the class rather than an instance of the class.

Can Constructor be static in Java?

No, constructors cannot be static in Java. Constructors are used to initialize the instance of the class; static entities are associated with the class, not the instance of the class; therefore, constructors cannot be static. If we add a static keyword to the constructor, we will get a compilation error saying Illegal modifier for the constructor in type class-name; only public, protected, and private are permitted.

Constructor cannot be static in Java
Fig 2- Constructor cannot be static in Java
Note: In Java, the abstract keyword is used in the context of abstract classes (which can not be instantiated) and abstract methods (which do not have method definitions).

Can Constructor be abstract in Java?

No, constructors cannot be abstract in Java. Abstract methods are those that do not have a body or definition, whereas constructors are used to initialize the objects in Java, which means they must have a body. Therefore, we cannot have abstract constructors in Java.

Constructor cannot be abstract in Java
Fig 3- Constructor cannot be abstract in Java

Leave a Reply

Your email address will not be published. Required fields are marked *