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

avec Java Discussion :

SUPER - utiliser le constructeur de la même class


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 18
    Points : 14
    Points
    14
    Par défaut SUPER - utiliser le constructeur de la même class
    Bonjour à tous,

    Est-il possible d'utiliser le "premier" constructeur d'une classe avec la méthode SUPER ?

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public NormalisationFichier(String pathname, String referenceFlux, String serveurSource, String serveurCible){
     
    		this.pathname = pathname;
    		this.referenceFlux = referenceFlux;
    		this.serveurSource = serveurSource;
    		this.serveurCible = serveurCible;
    		this.serveurCible = serveurCible;
     
     
    	}//Fin constructeur 1
    Puis un surcharge de constructeur 1 avec un paramètre en plus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public NormalisationFichier(String pathname, String referenceFlux,
    			String serveurSource, String serveurCible, String newFichier){
    		super();
    		this.newFichier = newFichier;
    En somme je souhaite utiliser le premier constructeur puis dans le second initialiser la variable en plus (plutôt que tout réécrire).

    Merci pour vos réponse !

  2. #2
    Membre éclairé Avatar de seeme
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    430
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 430
    Points : 791
    Points
    791
    Par défaut
    Si j'ai bien compris, ces constructeurs correspondent à une même classe. L'utilisation de super() n'a rien à voir ici. Super ça permet d'appeler le constructeur de la classe mère depuis une classe fille.

    Je ne crois pas que ce que tu veux faire soit possible (en tout cas pas comme ça).

    Le plus simple serait de faire une fonction d'initialisation privée appellée par les 2 constructeurs.


    Maintenant, je ne suis pas sûr d'avoir parfaitement compris ce que tu veux faire...

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2004
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2004
    Messages : 265
    Points : 342
    Points
    342
    Par défaut
    Si c'est possible, par contre ce n'est pas avec super (qui appelle le constructeur de la classe mère) mais avec this :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public NormalisationFichier(String pathname, String referenceFlux,
    			String serveurSource, String serveurCible, String newFichier){
    		this(pathname, referenceFlux, serveurSource, serveurCible);
    		this.newFichier = newFichier;
    }

  4. #4
    Membre éprouvé
    Avatar de michel.di
    Homme Profil pro
    Freelance
    Inscrit en
    Juin 2009
    Messages
    782
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 782
    Points : 1 042
    Points
    1 042
    Par défaut
    Salut,
    Faut que tu fasses:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    this(pathname, referenceFlux, serveurSource, serveurCible);
    this.newFichier = newFichier;
    Docteur en informatique
    Freelance R&D, Web
    Activité freelance : https://redinnov.fr
    Page perso : https://michel-dirix.com/

  5. #5
    Invité
    Invité(e)
    Par défaut
    Salut,

    Pour appeler un autre constructeur de la même classe, il faut utiliser this

    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
     
    public class NormalisationFichier {
    	...
    	public NormalisationFichier(String pathname, String referenceFlux,
    			String serveurSource, String serveurCible) {
     
    		this.pathname = pathname;
    		this.referenceFlux = referenceFlux;
    		this.serveurSource = serveurSource;
    		this.serveurCible = serveurCible;
     
    	}
     
    	public NormalisationFichier(String pathname, String referenceFlux,
    			String serveurSource, String serveurCible, String newFichier){
    		this(pathname, referenceFlux, serveurSource, serveurCible);
    		this.newFichier = newFichier;
    	}
    }
    A plus

    EDIT : doublement grillé ^^

  6. #6
    Membre éclairé Avatar de seeme
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    430
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 430
    Points : 791
    Points
    791
    Par défaut
    Je n'avais même pas pensé à ça

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 18
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par seeme Voir le message
    Si j'ai bien compris, ces constructeurs correspondent à une même classe. L'utilisation de super() n'a rien à voir ici. Super ça permet d'appeler le constructeur de la classe mère depuis une classe fille.

    Je ne crois pas que ce que tu veux faire soit possible (en tout cas pas comme ça).

    Le plus simple serait de faire une fonction d'initialisation privée appellée par les 2 constructeurs.


    Maintenant, je ne suis pas sûr d'avoir parfaitement compris ce que tu veux faire...
    Fort possible que le chemin n'est pas le bon.

    J'initialise des variables avec le premier constructeur.

    Cependant si j'instancie ma classe avec un paramètre en plus, je souhaite que le second constructeur gère cette variable

    Du coup dans mon source dois-je écrire à nouveau toutes les initialisation (this.etc) + celle de la nouvelle variable ?

    Exemple :

    MaClasse objet = new MaClass(A, B, C)

    ou

    MaClasse objet = new MaClass(A, B, C, D)

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 18
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par gailuris Voir le message
    Si c'est possible, par contre ce n'est pas avec super (qui appelle le constructeur de la classe mère) mais avec this :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public NormalisationFichier(String pathname, String referenceFlux,
    			String serveurSource, String serveurCible, String newFichier){
    		this(pathname, referenceFlux, serveurSource, serveurCible);
    		this.newFichier = newFichier;
    }
    Parfait !!

    merci à tous !

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

Discussions similaires

  1. Probleme constructeurs d'une même classe
    Par LinuxUser dans le forum Langage
    Réponses: 4
    Dernier message: 06/06/2007, 14h58
  2. Réponses: 5
    Dernier message: 30/01/2007, 13h23
  3. [POO] Deux constructeurs pour une même classe
    Par amika dans le forum Langage
    Réponses: 4
    Dernier message: 16/12/2006, 16h31
  4. Utiliser une methode d'une même classe
    Par Flamby69 dans le forum C++
    Réponses: 4
    Dernier message: 11/11/2006, 18h14
  5. [Applet]Utiliser plusieurs Applet dans une même classe
    Par BRAUKRIS dans le forum Applets
    Réponses: 5
    Dernier message: 11/06/2004, 15h27

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