Maison >Java >javaDidacticiel >Quelle est la différence entre les constructeurs vides et non vides en Java ?

Quelle est la différence entre les constructeurs vides et non vides en Java ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-09 07:33:06551parcourir

What's the Difference Between Void and Non-Void Constructors in Java?

Comprendre les constructeurs « vides » et « non vides » en Java

En Java, le constructeur joue un rôle unique, distinct des méthodes. Bien qu'il partage le même nom que la classe qu'il initialise, il lui manque un type de retour et est seul responsable de l'initialisation des objets. Contrairement aux méthodes, les constructeurs ne suivent pas les principes de surcharge de méthodes.

Pour illustrer ce concept, considérons les extraits de code suivants :

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);
    }
}

Dans cet extrait, un constructeur non nul est déclaré . La sortie du programme est 2, comme prévu. Cependant, considérons le code modifié suivant :

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);
    }
}

Dans cet extrait modifié, le constructeur a été déclaré nul. Le résultat ? La sortie est maintenant 0. Ce comportement vient du fait que lors de la déclaration d'un constructeur avec un type de retour void, il ne s'agit essentiellement plus d'un constructeur mais plutôt d'une méthode régulière. Par conséquent, elle n'a pas la capacité d'effectuer l'initialisation d'objets.

En Java, une classe peut avoir plusieurs constructeurs, chacun avec des arguments différents (liste de paramètres), mais un seul constructeur sans arguments (le constructeur par défaut) . Si une classe ne définit aucun constructeur, le compilateur insère automatiquement un constructeur par défaut sans argument.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn