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 :

[DEBUTANT] Contructeur appelant un autre constructeur


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 44
    Points : 36
    Points
    36
    Par défaut [DEBUTANT] Contructeur appelant un autre constructeur
    Bonjour,

    juste une petite question, est ce qu'un constructeur peut appeler un autre constructeur de la même class ?

    exemple :
    public class A {
    private String toto;
    public A()
    {
    super();
    // initialisation
    ...
    }
    public A(String titi)
    {
    A()
    toto = titi;
    }
    }
    afin d'eviter de recopier le code du premier constructeur.
    si oui comment ? car cela ne compile pas.

    cdt,
    dosy07

  2. #2
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Tu peut bien sur appeller l'autre constructeur, mais pas de la manière que tu as employéé. si tu veut appeler l'autre constructeur, tu es obligé d'instancier une nouvelle fois la classe A, ce qui n'est pas optimal.

    Le mieux dans ton cas, c'est de faire une méthode d'initialisation de tout ce qui est commun aux deux constructeurs, tu pourrais faire quelque chose comme ca :


    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
    public class A { 
    private String toto;
    public A(){
    super(); initialize();
    }
    public A(String titi){
    super(); toto = titi; initialize();
    } public void initialize(){ //Initialisation }
    }

  3. #3
    Membre actif
    Avatar de mathk
    Inscrit en
    Décembre 2003
    Messages
    211
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 211
    Points : 233
    Points
    233
    Par défaut
    il y a aussi le
    Si grande est la faiblesse d'une âme, dont la raison est partie!
    Ne jamais embrouiller ni abasourdir par une foule d'images le génie intérieur qui réside au fonde de sa poitrine,...
    L'ambition est le rfuge de l'échec. "Oscar Wild"

  4. #4
    Membre confirmé Avatar de Scorpyosis
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2004
    Messages : 365
    Points : 570
    Points
    570
    Par défaut
    Oui tu peux le faire en faisant this() qui appelera le constructeur qui ne prends aucun argument, tu auras compris que c'est la meme chose si c'est un constructeur avc un argument, this(argument...)
    Les deux principales inventions sorties de Berkeley sont UNIX et le LSD. Difficile de croire à une quelconque coïncidence - Jeremy S. Anderson

    Avant de vouloir qu’un logiciel soit réutilisable, il faudrait d’abord qu’il ait été utilisable - Ralph Johnson

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 44
    Points : 36
    Points
    36
    Par défaut
    Merci beaucoup !!!

  6. #6
    Membre émérite
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Points : 2 411
    Points
    2 411
    Par défaut
    tiens d'ailleurs, si tu utilises toujours ton constructeur avec un string, passe le constructeur par défaut en private puisqu'il n'est appelé qu'à l'intérieur de ta classe

    mavina
    Développeur Java / Flex à Shanghai, Chine
    mes publications
    Mon dernier tutoriel : Messages Quit IRC : explications

    La rubrique IRC recrute des redacteurs : contactez moi

    Ce flim n'est pas un flim sur le cyclimse. Merci de votre compréhension.[/SIZE]

Discussions similaires

  1. Impossible d'appeler un autre constructeur
    Par Topeur dans le forum C++
    Réponses: 3
    Dernier message: 27/05/2008, 18h44
  2. [Debutant] Formulaire qui appel un autre formulaire
    Par anassyto dans le forum Access
    Réponses: 6
    Dernier message: 31/07/2006, 12h10
  3. Réponses: 21
    Dernier message: 20/06/2006, 16h49
  4. Appel d'un constructeur à partir d'un autre
    Par Pragmateek dans le forum Langage
    Réponses: 28
    Dernier message: 18/06/2006, 01h07

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