JAVA - Constructeurs et destructeurs

Noter ce cours :

Liens sponsorisés :

Les constructeurs :

Lorsque vous créez un objet (instanciation d'une classe), vous faites automatiquement appel à une méthode générique appelée constructeur. Cette méthode permet généralement d'assigner des valeurs aux variables définies dans la classe. Cette méthode obéit toutefois à des règles particulières :

  • Un constructeur doit toujours être une méthode publique
  • Vous devez impérativement donner le même nom que votre classe au constructeur
  • Un constructeur ne retourne rien, c'est à dire que vous n'ajouterez pas de return dans cette méthode.
  • Vous ne devez pas mettre de void, même si le constructeur ne retourne rien.

Voici une classe dotée d'un constructeur :

public class Test
{
    public Test()
    {
        System.out.println("L'objet a été créé");
    }
}

Lorsque vous créerez l'objet Test via cette instruction : Test variable = new Test(); , ceci affichera à l'écran "L'objet a été créé".

En général, un constructeur sert plutôt à attribuer des valeurs aux attributs de la classe. Nous voici avec une classe déjà plus exploitable :

public class Test
{
     private int zero;
     private boolean condition;

     public Test()
     {
          zero = 0;
          condition = false;

          System.out.println("L'objet a été créé");
     }
}

La surcharge :

En JAVA, il existe ce que l'on appelle la surcharge de méthode. Les constructeurs n'échappent pas à cette règle. La surcharge de méthode intervient lorsque l'on nomme deux méthodes à l'identique, seuls les paramètres varient. Voici un exemple :

public class Test
{
     private int zero;
     private boolean condition;

     public Test()
     {
          zero = 0;
          condition = false;

          System.out.println("L'objet a été créé");
     }

     public Test(boolean bool)
     {
          zero = 0;
          condition = bool;

          System.out.println("L'objet a été créé avec le second constructeur");
     }
}

Maintenant une question se pose : quel constructeur va choisir JAVA lorsque vous allez créer votre objet ?

Tout dépend du code que vous allez utiliser :

  • Test variable = new Test(); //Ceci va utiliser le premier constructeur car aucun paramètre n'a été fourni, et donc l'attribut "condition" de la classe vaudra false.
  • Test variable = new Test(true); //Ceci va utiliser le second constructeur car le paramètre bool a été fourni. L'attribut "condition" vaudra true.
  • Test variable = new Test(false); //Ceci va utiliser le second constructeur car le paramètre bool a été fourni. L'attribut "condition" vaudra false.

Le destructeur :

Le destructeur est une méthode spéciale qui sera appelée (si elle est redéfinie dans la classe) lorsque l'objet sera nettoyé de la mémoire par le garbage collector. Le garbage collector est un "ramasse-miettes" chargé de faciliter la tâche des programmeurs en libérant les ressources prises en mémoire automatiquement. Cette méthode n'est pas forcément appelée lorsque vous supprimez l'objet.

Pour utiliser le destructeur vous devez redéfinir une méthode appelée finalize() publique et qui ne renvoie rien. On peut donc avoir le code suivant :

public class Test
{
     private int zero;
     private boolean condition;

     public Test()
     {
          zero = 0;
          condition = false;

          System.out.println("L'objet a été créé");
     }
    
     public void finalize()
     {
          System.out.println("Objet nettoyé de la mémoire");  
     }
}

Vous avez aimé cet article intitulé JAVA - Constructeurs et destructeurs ? Partagez-le !
Vulgarisation-informatique.com
Cours en informatique & tutoriels