logo

Constructeur statique Java

En Java, un constructeur ne peut pas être abstrait, final, statique, natif ou strictfp. Il n'y a donc pas de statique constructeur en Java .

Un constructeur statique utilisé pour initialiser des données statiques signifie que la tâche spécifiée ne s'exécutera qu'une seule fois dans le programme. Habituellement, un constructeur statique est automatiquement appelé lorsque la première instance est générée ou qu'un membre statique est référencé. Le constructeur statique est explicitement déclaré à l'aide d'un mot clé static. Cependant, le constructeur statique n'est pas autorisé en Java.

aligner le texte CSS

Certaines fonctionnalités clés du constructeur statique sont les suivantes :

  • Il ne prendra pas de paramètres ni de modificateurs d’accès.
  • Une classe spécifique ne peut avoir qu'un seul constructeur statique.
  • Il n'autorise pas l'héritage ou la surcharge.
  • Il est invoqué automatiquement et ne peut être appelé directement ou explicitement.
  • Si la valeur des champs statiques n'est pas initialisée, elle sera initialisée aux valeurs par défaut.

Comprenons pourquoi le constructeur statique n'est pas autorisé en Java :

Et si nous déclarions un constructeur statique ?

Un constructeur statique n'est pas autorisé dans Programmation Java . Il est illégal et contraire aux standards Java d'utiliser un constructeur statique. Ainsi, le programme Java ne sera pas compilé et générera une erreur de compilation.

Comprenons-le avec un exemple. Considérez l'exemple ci-dessous :

Internet utilisant

StaticConstructorDemo.java :

 public class StaticConstructorDemo { //Declaring a static constructor public static StaticConstructorDemo() { System.out.println('Static Constructor of the class'); } public static void main(String args[]) { // Creating a constructor object to invoke it StaticConstructorDemo obj = new StaticConstructorDemo(); } } 

Sortir:

 Exception in thread 'main' java.lang.Error: Unresolved compilation problem: Illegal modifier for the constructor in type StaticConstructorDemo; only public, protected & private are permitted. at StaticConstructorDemo.(StaticConstructorDemo.java:4) at StaticConstructorDemo.main(StaticConstructorDemo.java:13) 

D'après l'exemple ci-dessus, nous pouvons voir qu'il lève une exception ' Modificateur illégal pour le type constructeur '. Et il est clairement écrit que public, protégé , & privé sont autorisés.

Pourquoi Java ne prend-il pas en charge un constructeur statique ?

Lorsque nous marquons quelque chose avec un mot-clé statique, il appartient uniquement à la classe, par exemple une méthode statique, une variable statique, etc. Les méthodes statiques ne peuvent pas être héritées de leurs sous-classes car elles appartiennent à la classe dans laquelle elles sont déclarées. De même, on ne peut pas utiliser une variable statique dans ses sous-classes.

Dans le cas d'un constructeur, un constructeur est un bloc de code réutilisable, ce qui signifie qu'on peut l'appeler depuis ses sous-classes lors de la création des objets. Mais, lorsque nous le déclarons comme statique, il ne peut pas être utilisé par ses sous-classes autres que les classes déclarantes. Il est donc illégal de déclarer un constructeur comme statique. Ainsi, cela violerait tout le motif du concept d’héritage.

Si nous déclarons un constructeur comme statique, alors il ne sera pas accessible à ses sous-classes et appartiendra uniquement à un niveau de classe. Le programme ne sera pas compilé et générera une erreur de compilation.

variables nginx

Comprenons-le avec un exemple :

instance de Java

StaticConstructorExample.java :

 public class StaticConstructorExample { public StaticConstructorExample() { /*Constructor of this class*/ System.out.println('In StaticConstructorExample Class'); } } 

StaticConstructorChild.java :

 public class StaticConstructorChild extends StaticConstructorExample { public StaticConstructorChild() { System.out.println('In StaticConstructorChild class'); } public void display() { System.out.println('Method of StaticConstructorChild class'); } public static void main(String args[]) { StaticConstructorChild obj = new StaticConstructorChild(); obj.display(); } } 

Sortir:

 In StaticConstructorExample Class In StaticConstructorChild class Method of StaticConstructorChild class 

À partir de l'exemple ci-dessus, nous pouvons remarquer que lorsque l'objet de classe enfant est créé, il invoque d'abord le constructeur de classe parent, puis son propre constructeur de classe. Cela se produit parce que le nouveau mot-clé crée l'objet puis appelle le constructeur pour initialiser les valeurs. Chaque classe enfant a un constructeur super() comme première instruction à hériter des propriétés de la classe parent.

C'est la raison pour laquelle nous ne pouvons pas créer de constructeur statique en Java.

Conclusion:

Les constructeurs en Java ne peuvent pas être statiques car s'ils sont marqués comme statiques, ils ne peuvent pas être appelés depuis la classe enfant ; ainsi, l'objet de la classe enfant ne sera pas créé. Le programme ne sera pas compilé et générera une erreur de compilation.