Maison >Java >javaDidacticiel >Constructeurs Java : quelle est la différence entre les constructeurs vides et non vides ?
Constructeurs en Java : "Vide" vs "Non-Void"
Dans le langage de programmation Java, les classes peuvent avoir des constructeurs, qui sont des méthodes spéciales appelées lors de la création d’une instance de la classe. Les constructeurs servent à initialiser l'état de l'objet. Il existe deux types de constructeurs : les constructeurs « vides » et les constructeurs « non vides ».
Constructeurs « non vides »
Un constructeur « non vide » déclare un type de retour autre que void. En d’autres termes, il renvoie une valeur, généralement une instance de la classe elle-même. Lorsqu'un constructeur "non vide" est appelé, un nouvel objet est créé et la valeur renvoyée est affectée à la variable de référence qui a invoqué le constructeur.
Constructeurs "Void"
Les constructeurs "Void", en revanche, ne déclarent pas de type de retour. Au lieu de cela, ils exécutent simplement le corps du constructeur et initialisent l'état de l'objet. Ils ne renvoient pas de valeur et ne peuvent donc pas être utilisés pour créer de nouveaux objets.
Problème de visibilité des constructeurs
En Java, les constructeurs n'ont pas les mêmes modificateurs d'accès que méthodes. La visibilité d'un constructeur doit correspondre à la visibilité de la classe elle-même. Par exemple, si une classe est déclarée publique, alors son constructeur doit également être déclaré public.
Exemple : Impact sur la visibilité du constructeur
Considérez les deux extraits de code suivants :
Exemple 1 : Constructeur avec Return Type
public class Class1 { public static Integer value = 0; public Class1() { da(); } public int da() { Class1.value += 1; return 5; } public static void main(String[] args) { Class1 h = new Class1(); Class1 h2 = new Class1(); System.out.println(Class1.value); } }
Exemple 2 : Constructeur avec type de retour Void
public class Class1 { public static Integer value = 0; public void Class1() { da(); } public int da() { Class1.value += 1; return 5; } public static void main(String[] args) { Class1 h = new Class1(); Class1 h2 = new Class1(); System.out.println(Class1.value); } }
Observation :
Dans l'exemple 1, la sortie est 2. En effet, le constructeur appelle la méthode da(), qui incrémente le champ de valeur de 1.
Cependant, dans l'exemple 2, la sortie est 0. En effet, le constructeur avec le type de retour void n'appelle pas réellement la méthode da(). Il s'agit plutôt d'une méthode portant le même nom que la classe, qui est distincte du constructeur.
Conclusion :
En Java, les constructeurs ne sont pas des méthodes. Ils sont utilisés pour initialiser l'état d'un objet et n'ont pas de types de retour. Tenter de déclarer un constructeur avec un type de retour autre que void entraînera une erreur de compilation.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!