[Java] Protected ou Public pour clone() ?
Page 1 sur 1 • Partager •
[Java] Protected ou Public pour clone() ?
Tout est dans le titre !
Dans le projet Gyges, nous avions une demande de coder la méthode clone() de la classe Plateau. Chez moi elle a une visibilité 'public'. Est-ce une bonne chose ? Dois-ton forcément avoir une visibilité 'protected' comme demandé dans le projet de dame de cette année (classe Etat).
Existe-t-il une différence d'utilisation ? Dans quelle contexte ?
Dans le projet Gyges, nous avions une demande de coder la méthode clone() de la classe Plateau. Chez moi elle a une visibilité 'public'. Est-ce une bonne chose ? Dois-ton forcément avoir une visibilité 'protected' comme demandé dans le projet de dame de cette année (classe Etat).
Existe-t-il une différence d'utilisation ? Dans quelle contexte ?

Dj x-fuse- Nombre de messages: 562
Age: 23
Prénom: Jonathan
Statut: 2ième réseau
Localisation: IRL
Date d'inscription: 18/10/2008
Re: [Java] Protected ou Public pour clone() ?
La méthode clone doit toujours être sous cette forme si tu veux redéfinir le "clone" par défaut (et cela vaut pour toute redéfinition...) :
voir le lien : http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()
- Code:
protected Object clone()
throws CloneNotSupportedException
voir le lien : http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()
Anthoblack- Nombre de messages: 764
Age: 24
Prénom: Anthony
Statut: Ex-étudiant
Localisation: Bruxelles
Date d'inscription: 11/03/2008
Re: [Java] Protected ou Public pour clone() ?
Je ne suis pas entièrement d'accord avec Antho, voir http://ydisanto.developpez.com/tutoriels/j2se/cloneable/
_________________
PbT qui conseille la lecture de smartq.namok.be, la faq aussi pq pas.
Pour papoter ensemble, rdv sur IRC, irc.freenode.net #esi ou via Jabber esi@chat.jabberfr.org
Mon style #pbt {heigth:189cm; weight:79kg; eye-color:#524000; hair:very short; dead pixels: some; }

Re: [Java] Protected ou Public pour clone() ?
pbt a écrit:Je ne suis pas entièrement d'accord avec Antho, voir http://ydisanto.developpez.com/tutoriels/j2se/cloneable/
Au temps pour moi
Anthoblack- Nombre de messages: 764
Age: 24
Prénom: Anthony
Statut: Ex-étudiant
Localisation: Bruxelles
Date d'inscription: 11/03/2008
Re: [Java] Protected ou Public pour clone() ?
a propos de cette methode clone() ,
je pensais aussi faire comme cela mais MCD m a dit en labo que ca ne faisait pas une copie "profonde", comment faire alors ? il a dit que cette methode etait a revoir ... mais j ai beau "revoir" , la seul solution que j'ai trouver est de recréer chaque attribut et leur affecté la valeur de la source ... ca me semble bizarre
je pensais aussi faire comme cela mais MCD m a dit en labo que ca ne faisait pas une copie "profonde", comment faire alors ? il a dit que cette methode etait a revoir ... mais j ai beau "revoir" , la seul solution que j'ai trouver est de recréer chaque attribut et leur affecté la valeur de la source ... ca me semble bizarre
trikman- Nombre de messages: 68
Prénom: martin
Date d'inscription: 04/11/2009
Re: [Java] Protected ou Public pour clone() ?
la méthode clone: pour invoquer cette méthode on utilise la méthode clone de la classe Object dont toute classe hérite et en faisant
super.clone() on a en retour un clone de l'objet. l'objet retourné est de type Object et il est protected "penser à le caster avant de le retourner pour une meilleure utilisation..." autre chose. en effet super.clone() ne fait pas de copie profonde si l'objet qui invoque super.clone() n'a que des attibuts de types primitif, super.clone() est tout à fait suffisant..par contre si il y a des attibuts de types reference il faut penser à faitre une copie profonde car les attibuts du clone vont juste referencer le même objet que dans l'original...pratiquement comment faire? on clone l'objet mais avant de le retourner on clone chaque attibut de type reference de façon a remplacer la reference vers l'objet par la référence de la copie....pour que ceci soit possible, ces attributs (de types reference) DOIVENT etre cloneable c'est à dire que leur classe doit avoir implementé l'interface cloneable.
super.clone() on a en retour un clone de l'objet. l'objet retourné est de type Object et il est protected "penser à le caster avant de le retourner pour une meilleure utilisation..." autre chose. en effet super.clone() ne fait pas de copie profonde si l'objet qui invoque super.clone() n'a que des attibuts de types primitif, super.clone() est tout à fait suffisant..par contre si il y a des attibuts de types reference il faut penser à faitre une copie profonde car les attibuts du clone vont juste referencer le même objet que dans l'original...pratiquement comment faire? on clone l'objet mais avant de le retourner on clone chaque attibut de type reference de façon a remplacer la reference vers l'objet par la référence de la copie....pour que ceci soit possible, ces attributs (de types reference) DOIVENT etre cloneable c'est à dire que leur classe doit avoir implementé l'interface cloneable.
karemkadidola- Nombre de messages: 240
Prénom: aimé
Date d'inscription: 13/10/2009
Re: [Java] Protected ou Public pour clone() ?
karemkadidola a écrit:...
Mettre de la ponctuation et passer à la ligne, c'est pas mal parfois
Sinon ça me semble correct.
Anthoblack- Nombre de messages: 764
Age: 24
Prénom: Anthony
Statut: Ex-étudiant
Localisation: Bruxelles
Date d'inscription: 11/03/2008
Re: [Java] Protected ou Public pour clone() ?
tu as raison on dirait que j'étais entrain de chanter là...lol
karemkadidola- Nombre de messages: 240
Prénom: aimé
Date d'inscription: 13/10/2009
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum