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 :

Héritage d'une classe avec constructeur privé


Sujet :

Langage Java

  1. #1
    Membre actif Avatar de Braillane
    Profil pro
    Développeur Java
    Inscrit en
    Janvier 2007
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2007
    Messages : 212
    Points : 203
    Points
    203
    Par défaut Héritage d'une classe avec constructeur privé
    Bonjour,
    est-il possible d'étendre une classe dont le constructeur est en private???
    thibaultdelor.com
    SCJP & SCWCD

  2. #2
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 133
    Points : 149
    Points
    149
    Par défaut
    Une seule chose, teste donc.

  3. #3
    Membre actif Avatar de Braillane
    Profil pro
    Développeur Java
    Inscrit en
    Janvier 2007
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2007
    Messages : 212
    Points : 203
    Points
    203
    Par défaut
    j'ai testé et je n'y arrive pas, c'est pour ça que je demande....
    thibaultdelor.com
    SCJP & SCWCD

  4. #4
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    A première vu il n'y a rien qui t'en empêche. Montre nous ce que tu as écrit et indique nous quel message d'erreur tu as eu.
    autant l'hiver éclate que l'hétéroclite
    le vrai geek c'est celui qui croit qu'il y a 1024 mètres dans un kilomètre

  5. #5
    Membre émérite
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Points : 2 582
    Points
    2 582
    Par défaut
    Si la classe n'a que des constructeurs privés, non, ce n'est pas possible de lui donner des classes filles.

    Ce qui l'empêche est que le constructeur "fille" devra appeler un constructeur "maman", mais constructeur maman invisible puisqu'il est privé.
    Mieux que Google, utilisez Sur Java spécialisé sur la plate-forme java !
    Pour réaliser vos applications Java dans le cadre de prestations, forfait, conseil, contactez-moi en message privé.

  6. #6
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Bonjour,

    J'ajoute qu'en général les compilateurs évolués t'invitent à mettre ta classe en final quand elle n'est pourvue que de constructeurs privés, exactement pour cette raison !

  7. #7
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    Bonjour,

    Petite précision, si tu veux proscrire l'instanciation d'un type donné, mais ne pas figer pour autant ses responsabilités en permettant l'héritage. Alors il est tout à fait envisageable de passer par un constructeur protégé.
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  8. #8
    Membre actif Avatar de Braillane
    Profil pro
    Développeur Java
    Inscrit en
    Janvier 2007
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2007
    Messages : 212
    Points : 203
    Points
    203
    Par défaut
    Le problème du protected est qu'il autorise les classes du package. Enfin bon en théorie les autres classes du package sont censé être développer par moi, mais je trouve dommage qu'il n'y est pas d'accesseur qui n'autorise qu'uniquement les classes filles. Mais bon je suppose que cela a été voulu pour avoir une hiérarchie dans les accesseurs... Ca aurait été difficile pour un tel accesseur de comparer sa "restrictivité" par rapport à l'accesseur par défaut...

    D'ailleur me vient une question en passant (que je testerais si personne ne sait ). Comment réagi java si dans deux jars différents on a deux classes ayant le même package? Parce que si il les considère comme étant vraiment dans le même package du coup mes restrictions ne servent plus à grand chose! Par exemple un développeur se servant de mon jar pourrait faire ce qu'il veut! (En même temps il aurait aussi pu dézipper mon jar et mettre ses classes dedans... mais au niveau du concept Objet je trouve ça étrange de pouvoir le faire)
    thibaultdelor.com
    SCJP & SCWCD

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 42
    Points : 41
    Points
    41
    Par défaut
    Salut,

    On peut effectivement placer deux classes dans le même package même si elles proviennent de deux JARs distincts. Heureusement, il est possible de pallier à cela à l'aide d'une petite déclaration dans le manifest de ton JAR :

    http://java.sun.com/docs/books/tutor...r/sealman.html.

    D'après le lien qui figure dans cette page ("JDC TechTips"), à partir du moment où une classe est chargée depuis un package scellé, tout autre classe du même package devra provenir du même JAR, sous peine de se voir refuser d'être chargée.

  10. #10
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 121
    Points : 110
    Points
    110
    Par défaut
    Hello

    Dans java les constructeurs privées ne sont pas héritées.

    En général un contructeur doit appeler un contrcuteur de la classe mère, soit explicitement (à l'aide de super(...)), soit implicitement (toute classe héritant de Object et qui déclare un constructeur XX, ce constructeur appelle le constructeur sans arguments de Object, indépendamment de la signature de XX.

    dans le cas d'un constructeur privé au niveau de la classe mère, il n'est pas visibe pr la classe fille, du fait qu'il est privé, donc il ne sera pas appelé.

  11. #11
    Membre actif Avatar de Braillane
    Profil pro
    Développeur Java
    Inscrit en
    Janvier 2007
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2007
    Messages : 212
    Points : 203
    Points
    203
    Par défaut
    Merci de la précision Eric73!! Je n'étais pas au courant du tout de ça!
    thibaultdelor.com
    SCJP & SCWCD

  12. #12
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Précision supplémentaire : si tu ne déclares aucun constructeur dans une classe, le compilateur inclue automatiquement un constructeur par défaut sans argument qui se contente de faire appel à super(). Ceci n'est plus fait dès que tu déclares le moindre constructeur ; donc si le seul constructeur déclaré est privé, la classe devient non-héritable car aucun constructeur ne serait appelable.

  13. #13
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    Citation Envoyé par Rei Ichido Voir le message
    Ceci n'est plus fait dès que tu déclares le moindre constructeur ; donc si le seul constructeur déclaré est privé, la classe devient non-héritable car aucun constructeur ne serait appelable.
    Ou du moins, appelé. En effet implicitement le constructeur par défaut sera appelé, mais rien ne nous empêche d'appeler un constructeur accessible explicitement.
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 42
    Points : 41
    Points
    41
    Par défaut
    Mais de rien Braillane ^^.

Discussions similaires

  1. Réponses: 0
    Dernier message: 27/06/2014, 12h12
  2. Réponses: 5
    Dernier message: 14/10/2012, 19h25
  3. Instanciation d'une classe avec héritage QSettings
    Par bigtouf dans le forum Débuter
    Réponses: 2
    Dernier message: 11/10/2011, 21h44
  4. Extend d'une classe avec un constructeur privé
    Par aelmalki dans le forum Langage
    Réponses: 5
    Dernier message: 13/03/2010, 11h09
  5. Erreur du designer avec héritage d'une classe abstraite
    Par Xzander dans le forum Windows Forms
    Réponses: 4
    Dernier message: 04/04/2007, 00h36

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