Bonjour,
est-il possible d'étendre une classe dont le constructeur est en private???
Bonjour,
est-il possible d'étendre une classe dont le constructeur est en private???
thibaultdelor.com
SCJP & SCWCD
j'ai testé et je n'y arrive pas, c'est pour ça que je demande....
thibaultdelor.com
SCJP & SCWCD
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
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é.
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 !
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
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
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.
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é.
Merci de la précision Eric73!! Je n'étais pas au courant du tout de ça!
thibaultdelor.com
SCJP & SCWCD
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.
http://alaindefrance.wordpress.com
Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
SDE at BitTitan
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager