< -->

vendredi 11 mars 2011

Constructeurs et destructeurs en java

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 {

    /**
     * @param args
     */

//constructeur

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

// en peut également  surcharger un constructeur

public test(String nom)
    {
        System.out.println("L'objet "+nom+" a été créé ");
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
new test();
new test("votreNom");
    }
}

En général, un constructeur sert plutôt à attribuer des valeurs aux attributs de la classe.il rest a dire que pour surcharger une méthode (c'est a dire la  possibilité d'appeler plusieurs méthodes-dans notre cas les constructeurs- avec le même nom, ) à condition que leurs arguments diffèrent en type et/ou en nombre
 voici un autre exemple pour mieux comprendre
public class test {
//variables de class

int num;

String nom;
    /**
     * @param args
     */

//les constructeurs

/* c est ce qu'on appelle le constructeur par défaut

*mais pas besoin de l écrire chaque fois car java le génère automatiquement
public test(){

}

*/
public test()
    {

        this.num=0;

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

// en peut également  surcharger un constructeur

public test(int num,String nom)
    {

this.num=num;

this.nom=nom;
        System.out.println("L'objet "+nom+" a été créé ");
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub 
//utilisation du 1 er constructeur 
new test(); 
//utilisation du 2eme constructeur 
new test(1,"votreNom");
    }
}

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

merci a Anthony de vulgarisation-informatique

Advertiser