Dans cette section, nous apprendrons pourquoi nous utilisons un constructeur en Java et quel est le but et besoin du constructeur . Parallèlement à cela, nous verrons également le types de constructeur.
En Java, le constructeur est similaire à la méthode. La propriété du constructeur est qu’il doit porter le même nom que le nom de la classe. Il n'a pas de type de retour. Nous n'avons pas besoin d'appeler le constructeur manuellement. Il s'appelle automatiquement implicitement lors de l'instanciation.
En d’autres termes, un constructeur est une méthode appelée lors de l’exécution lors de la création de l’objet à l’aide de l’opérateur new. La JVM l'appelle automatiquement lorsque nous créons un objet. Lorsque nous ne définissons pas de constructeur dans la classe, le constructeur par défaut est toujours présent de manière invisible dans la classe. Il existe les raisons suivantes pour utiliser des constructeurs :
- Nous utilisons des constructeurs pour initialiser l'objet avec l'état par défaut ou initial. Les valeurs par défaut des primitives ne correspondent peut-être pas à celles que vous recherchez.
- Une autre raison d'utiliser le constructeur est qu'il informe sur les dépendances. En d’autres termes, en utilisant le constructeur, nous pouvons demander à l’utilisateur de cette classe les dépendances requises.
- Nous pouvons découvrir ce dont il a besoin pour utiliser cette classe, simplement en regardant le constructeur.
En bref, nous utilisons le constructeur pour initialiser la variable d'instance de la classe.
Types de constructeurs
Il existe deux types de constructeurs en Java :
- Constructeur paramétré
- Constructeur par défaut
Constructeur paramétré
Comme son nom l'indique, il accepte des arguments (paramètres). Le constructeur paramétré est utilisé si nous voulons initialiser dynamiquement les variables d'instance avec les valeurs spécifiées au moment de l'instanciation.
Exemple
public class Demo { int i; //parameterized constructor public demo(int i) { this.i = i; } }
Constructeur par défaut
Le constructeur par défaut n'accepte aucun paramètre. Il est utilisé si nous voulons initialiser les variables d'instance avec certaines valeurs. Chaque classe Java possède un constructeur par défaut, de manière invisible. Nous n’avons donc pas besoin de le définir séparément. N'oubliez pas que le constructeur par défaut est supprimé de la classe lorsque nous créons un constructeur paramétré.
Exemple
public class Demo { int i; //default constructor public demo() { //the value of i is fixed this.i = 100; } }
Remarque : Lorsque nous ne fournissons aucun constructeur à un programme Java, le compilateur Java écrit le constructeur par défaut pour le compte du programmeur et compile le programme. Il initialise les variables d'instance avec les valeurs par défaut. Par exemple, 0 pour entier, 0,0 pour float et null pour String.
Créons un programme et utilisons le constructeur par défaut et paramétré.
Dans la classe Employee, nous avons créé deux constructeurs, l'un est le constructeur par défaut et l'autre est le constructeur paramétré. La classe Employee a deux variables privées, à savoir le nom et l'âge. Dans la méthode principale, nous avons instancié la classe et utilisé les deux constructeurs.
Employé.java
import java.util.Scanner; public class Employee { private String name; private int age; //parameterized constructor public Employee(String name, int age) { this.name =name; this.age = age; } //Default constructor public Employee() { this.name = 'William'; this.age = 28; } //method for printing the values public void show() { System.out.println('Name of the employee: '+this.name); System.out.println('Age of the employee: '+this.age); } //main method public static void main(String args[]) { Employee e=new Employee(); //Reading values from user Scanner sc = new Scanner(System.in); System.out.println('Enter the name of the employee: '); String name = sc.nextLine(); System.out.println('Enter the age of the employee: '); int age = sc.nextInt(); System.out.println(' '); //Calling the parameterized constructor System.out.println('Show() method for the parameterized constructor: '); new Employee(name, age).show(); //Calling the default constructor System.out.println('Show() method for the default constructor: '); new Employee().show(); } }
Sortir:
Enter the name of the employee: David Enter the age of the employee: 27 Show() method for the parameterized constructor: Name of the employee: David Age of the employee: 27 Show() method for the default constructor: Name of the employee: William Age of the employee: 28