dans java

Sous classe et Constructeur

Piqure de rappel sur le processus d’instanciation d’une sous classe.

La question suivante a été posée sur stackoverflow:

Lors de l’instanciation d’une sous classe héritant d’une classe abstraite a t’on besoin de définir un constructeur ?

La réponse à la question est que ça dépend des cas suivant.

  • Constructeur par défaut présent dans la classe parent
  • Constructeur par défaut absent => Autre constructeur présent.

Rappelons qu’une classe java possède toujours un constructeur, si aucun n’est définit le compilateur en ajoute un par défaut, si un constructeur est crée explicitement  alors ce constructeur par défaut n’existe plus.

Imaginons le cas de figure suivant :

Nous avons 2 classes la classe véhicule et la classe voiture


public class Vehicule {

}


public class Voiture extends Vehicule {

}

Nous avons donc défini un lien d’héritage entre Voiture et Véhicule.

Que se passe t’il lors de l’instanciation d’une classe voiture ?


Voiture v1 = new Voiture();

 

Le compilateur ajoute le code suivant dans la classe voiture vu que aucun constructeur n’a été définit.


public Voiture(){

super(); // Appel du constructeur parent

}

On peut noter l’appel au constructeur du parent via la methode

 super(); 

 

ainsi si un constructeur par défaut existe dans la classe parent il n’est pas nécessaire de redéfinir un constructeur dans la sous classe,le compilateur se chargera automatiquement d’appeler le constructeur par défaut de la sous classe qui lui même inclut un appel au constructeur de la classe parent. Ce mécanisme est garantit par Java et est appelé Constructor chaining.

Aussi longtemps qu’ un constructeur par défaut existe dans une classe il sera appelé automatiquement dans le constructeur des sous classes.

Si le constructeur par défaut est absent de la classe parent, à cause de l’ajout d’un autre constructeur alors il est impératif d’appeler ce constructeur dans les sous classes au risque d’avoir une erreur de compilation.

Ecrire un Commentaire

Commenter