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 :

Extend d'une classe avec un constructeur privé


Sujet :

Langage Java

  1. #1
    Membre habitué Avatar de aelmalki
    Inscrit en
    Mars 2009
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 250
    Points : 125
    Points
    125
    Par défaut Extend d'une classe avec un constructeur privé
    Bonjour,

    J'ai une ClasseB avec un constructeur privé, je voudrais bien savoir comment pourrais-je heriter de cette classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public class ClasseB {
     
    	private ClasseB(){
     
    	}
    }
    Si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class ClasseA extends ClasseB {
     
    	private ClasseA(){
    		super();
    	}
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    The constructor ClasseB() is not visible
    J'ai une erreur, je ne suis pas sûr, mais je pense que c'est normale puisque le constructeur est privée,

    Mon problème là, c'est que je ne peux pas changer la visibilité du constructeur de la ClasseB, parce qu'elle se trouve dans un jar.

    Est ce que vous pouvez me proposer une solution pour ce problème ?

    Merci infiniment.

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 565
    Points : 21 630
    Points
    21 630
    Par défaut
    Il n'y a pas vraiment de solution : par définition on ne peut pas étendre une classe dont tous les constructeurs sont private.

    Quand on ne peut pas étendre, on peut essayer de composer, mais là ce n'est pas possible car ClasseB n'implémente pas d'interface et n'a pas d'autre parent que Object.

    Mauvaise conception, il va falloir faire avec ClasseB et corriger derrière ce qui ne va pas, ou alors refaire ClasseB.

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    le constructeur privé est une technique pour empecher la dérivation (au même titre que final), ce n'est pas contournable, faut changer la classe parent pour rendre le constructeur au minimum protégé

  4. #4
    Membre habitué Avatar de aelmalki
    Inscrit en
    Mars 2009
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 250
    Points : 125
    Points
    125
    Par défaut
    Merci pour votes réponse et vos explications

    Donc pour vous, il est impossible de redéfinir les méthodes de ce genre de classe ?

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    sans réécrire la classe ou recourir à des trucs lourds comme l'aspect programming, non.

  6. #6
    Membre habitué Avatar de aelmalki
    Inscrit en
    Mars 2009
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 250
    Points : 125
    Points
    125
    Par défaut
    Merci.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 27/06/2014, 12h12
  2. Héritage d'une classe avec constructeur privé
    Par Braillane dans le forum Langage
    Réponses: 13
    Dernier message: 02/09/2009, 11h59
  3. Comment faire une classe avec deux form?
    Par Mickey.jet dans le forum Delphi
    Réponses: 10
    Dernier message: 04/07/2006, 18h23
  4. creer une classe avec VC++
    Par Spacy_green dans le forum MFC
    Réponses: 6
    Dernier message: 08/06/2006, 17h53
  5. Réponses: 5
    Dernier message: 26/05/2005, 15h40

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