Surcharge du constructeur dans Java
โก Rรฉsumรฉ intelligent
Surcharge du constructeur dans Java permet ร une classe de dรฉclarer plusieurs constructeurs qui diffรจrent par leur liste de paramรจtres, offrant ainsi aux dรฉveloppeurs une initialisation d'objet flexible, une rรฉutilisation de code plus propre grรขce ร this() et un comportement prรฉvisible chaque fois que des valeurs par dรฉfaut ou personnalisรฉes sont requises lors de l'instanciation.

Qu'est-ce que la surcharge de constructeur dans Java?
Surcharge du constructeur dans Java Il s'agit d'une technique dans laquelle une classe dรฉclare plusieurs constructeurs qui diffรจrent par leur liste de paramรจtres. Le compilateur diffรฉrencie ces constructeurs en analysant le nombre de paramรจtres et leurs types de donnรฉes.
Exemples de constructeurs valides pour la classe Compte sont indiquรฉs ci-dessous :
Account(int a); Account (int a,int b); Account (String a,int b);
Pourquoi avons-nous besoin de la surcharge du constructeur dans Java?
Surcharge du constructeur dans Java Amรฉliore la flexibilitรฉ et l'efficacitรฉ du code en autorisant plusieurs constructeurs dans une classe, chacun avec une liste de paramรจtres diffรฉrente.
- Flexibilitรฉ dans la crรฉation d'objets : La surcharge de constructeurs permet d'initialiser des objets de diffรฉrentes maniรจres, en fonction du nombre ou du type de paramรจtres.
- Code Rรฉutilisabilitรฉ: Vous pouvez rรฉutiliser la logique du constructeur en appelant un constructeur depuis un autre ร l'aide de cette() mot-clรฉ.
- Lisibilitรฉ amรฉliorรฉe : La surcharge des constructeurs rend le code plus intuitif en offrant des options spรฉcifiques pour diffรฉrents besoins d'initialisation.
- Initialisation par dรฉfaut et personnalisรฉe : La surcharge de constructeurs vous permet de crรฉer facilement des objets initialisรฉs par dรฉfaut et des objets personnalisรฉs.
Exemple : Surcharge de constructeur dans Java
L'exemple suivant illustre la surcharge de constructeurs dans Java en utilisant une classe nommรฉe Demo.
รtape 1) Tapez le code dans l'รฉditeur.
class Demo{ int value1; int value2; /*Demo(){ value1 = 10; value2 = 20; System.out.println("Inside 1st Constructor"); }*/ Demo(int a){ value1 = a; System.out.println("Inside 2nd Constructor"); } Demo(int a,int b){ value1 = a; value2 = b; System.out.println("Inside 3rd Constructor"); } public void display(){ System.out.println("Value1 === "+value1); System.out.println("Value2 === "+value2); } public static void main(String args[]){ Demo d1 = new Demo(); Demo d2 = new Demo(30); Demo d3 = new Demo(30,40); d1.display(); d2.display(); d3.display(); } }
รtape 2) Enregistrez, compilez et exรฉcutez le code.
รtape 3) Une erreur s'est produite. Essayez de la corriger avant de passer ร l'รฉtape suivante de la surcharge de constructeurs. Java.
รtape 4) Chaque classe a une valeur par dรฉfaut Constructeur en Java. Le constructeur par dรฉfaut pour Dรฉmo de classe is Dรฉmo()Si vous ne le fournissez pas, le compilateur le crรฉe pour vous et initialise les variables avec des valeurs par dรฉfaut.
Cependant, si vous spรฉcifiez un constructeur paramรฉtrรฉ comme Dรฉmo(int a) et je souhaite utiliser la valeur par dรฉfaut Dรฉmo(), il est obligatoire de le dรฉclarer explicitement.
รtape 5) Dรฉcommentez les lignes 4 ร 8 du code, puis enregistrez, compilez et exรฉcutez ร nouveau le programme pour observer le changement de comportement.
Chaรฎnage de constructeurs dans Java
Considรฉrons un scรฉnario dans lequel une classe de base est รฉtendue par un enfant. Chaque fois qu'un objet de la classe enfant est crรฉรฉ, le constructeur de la classe parent est invoquรฉ en premier. C'est appelรฉ chaรฎnage de constructeurs.
Exemple : Pour comprendre le chaรฎnage de constructeurs avec la surcharge de constructeurs dans Java
รtape 1) Copiez le code suivant dans l'รฉditeur.
class Demo{ int value1; int value2; Demo(){ value1 = 1; value2 = 2; System.out.println("Inside 1st Parent Constructor"); } Demo(int a){ value1 = a; System.out.println("Inside 2nd Parent Constructor"); } public void display(){ System.out.println("Value1 === "+value1); System.out.println("Value2 === "+value2); } public static void main(String args[]){ DemoChild d1 = new DemoChild(); d1.display(); } } class DemoChild extends Demo{ int value3; int value4; DemoChild(){ //super(5); value3 = 3; value4 = 4; System.out.println("Inside the Constructor of Child"); } public void display(){ System.out.println("Value1 === "+value1); System.out.println("Value2 === "+value2); System.out.println("Value1 === "+value3); System.out.println("Value2 === "+value4); } }
รtape 2) Exรฉcutez le code. En raison du chaรฎnage des constructeurs, lorsque l'objet de la classe enfant DรฉmoEnfant est crรฉรฉ, le constructeur Dรฉmo() La mรฉthode de la classe parente est invoquรฉe en premier, puis le constructeur. DรฉmoEnfant() L'enfant court ensuite.
Production attendue:
Inside 1st Parent Constructor Inside the Constructor of Child Value1 === 1 Value2 === 2 Value1 === 3 Value2 === 4
รtape 3) Vous pouvez observer que le constructeur parent Dรฉmo() s'exรฉcute par dรฉfaut. Pour appeler le constructeur surchargรฉ Dรฉmo(int a) Utilisez plutรดt le mot-clรฉ "super".
syntaxe:
super(); --or-- super(parameter list);
Exemple : Si votre constructeur parent ressemble ร Dรฉmo(String Nom, int a), vous prรฉciserez super("Javaยป,5). S'il est utilisรฉ, le mot-clรฉ super doit รชtre la premiรจre ligne de code du constructeur de la classe enfant.
รtape 4) Dรฉcommentez la ligne 26 et exรฉcutez le code. Observez le rรฉsultat.
Sortie :
Inside 2nd Parent Constructor Inside the Constructor of Child Value1 === 5 Value2 === 0 Value1 === 3 Value2 === 4
