IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Rôle du constructeur de la classe Object


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Devellopement
    Inscrit en
    Juin 2004
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Devellopement

    Informations forums :
    Inscription : Juin 2004
    Messages : 22
    Points : 26
    Points
    26
    Par défaut Rôle du constructeur de la classe Object
    Bonjour,

    Je démarre en Java et je remarque que dans la plupart des tutos, on appelle le constructeur de la classe object quand on définit une classe qui hérite directement de cette classe "mère".
    Par exemple :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public class UneClasse{
     
    	public UneClasse() {
    		super();
    		unMmembre = 0;
    	}
     
    	private int unMmembre;
     
    ...
    }
    Quel est l'intérêt de l'appel au mot clef super() ? Existe-t-il une différence sans cet appel au constructeur de la classe object ?

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Ça indique explicitement, dans le code, que le constructeur par défaut de la classe mère est appelé. (Note que ce n'est un appel au constructeur de Object que si la classe mère est Object.)

    Il n'y a pas de différence entre mettre super() au début d'un constructeur et ne pas le mettre. Dans les deux cas le constructeur par défaut de la classe mère est appelé. Si on met le super(), c'est explicite, sinon c'est implicite.
    Personnellement je trouve que ça ne sert pas à grand-chose, mais bon...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Nouveau membre du Club
    Profil pro
    Devellopement
    Inscrit en
    Juin 2004
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Devellopement

    Informations forums :
    Inscription : Juin 2004
    Messages : 22
    Points : 26
    Points
    26
    Par défaut
    Merci pour ta réponse, je viens de faire quelques programmes tests et en effet le constructeur sans paramamètre d'une classe mère est implicitement appelé dans le constructeur de la classe fille.

    Je me demande d'ailleurs dans quel cas le mot clé super() (appel d'un constructeur sans paramètre) est utile ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
     
    public class Mere{
    	/**
             * 
             */
    	public Mere() {
    		super();
    		volume = 2;
    	}
     
    	public Mere(int i) {
    		super();
    		volume = 3;
    	}
    	private int volume;
     
    	public int getVolume() {
    		return volume;
    	}
    }
     
     
    public class Fille extends Mere{
    	public Fille()
    	{
                    //Appel implicite au constructeur par défaut de la classe mère
    	   //super();
    	}
     
    	public void affiche(){
    		System.out.println("mon volume est : "+getVolume());
    	}

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Qu'est ce que la classe 'object' ?
    Par Kczav dans le forum Général Python
    Réponses: 2
    Dernier message: 01/03/2006, 16h49
  2. Réponses: 2
    Dernier message: 04/12/2005, 21h10
  3. Réponses: 5
    Dernier message: 20/11/2005, 11h15
  4. Réponses: 3
    Dernier message: 06/11/2005, 18h02
  5. [Language]constructeur de sous classes
    Par seb888 dans le forum Langage
    Réponses: 12
    Dernier message: 04/06/2005, 22h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo