[Java] Protected ou Public pour clone() ?

Voir le sujet précédent Voir le sujet suivant Aller en bas

[Java] Protected ou Public pour clone() ?

Message  Dj x-fuse le Mer 24 Mar 2010, 19:55

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 ?

Dj x-fuse

Nombre de messages : 658
Age : 27
Prénom : Jonathan
Statut : 4ième sécu
Localisation : IRL
Date d'inscription : 18/10/2008

Revenir en haut Aller en bas

Re: [Java] Protected ou Public pour clone() ?

Message  Anthoblack le Mer 24 Mar 2010, 22:49

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...) :
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 : 28
Prénom : Anthony
Statut : Ex-étudiant
Localisation : Bruxelles
Date d'inscription : 11/03/2008

Revenir en haut Aller en bas

Re: [Java] Protected ou Public pour clone() ?

Message  pbt le Mer 24 Mar 2010, 23:22

Je ne suis pas entièrement d'accord avec Antho, voir http://ydisanto.developpez.com/tutoriels/j2se/cloneable/

_________________
smartq.namok.be · faq ·  · IRC / irc.freenode.net #esi · blog.namok.be
style #pbt {heigth:189cm; weight:79kg; eye-color:#524000; hair:very short; dead pixels: some; }

pbt
Admin

Nombre de messages : 4862
Age : 45
Prénom : Pierre
Statut : prof
Localisation : La cité des géants
Date d'inscription : 24/11/2005

http://esi.namok.be

Revenir en haut Aller en bas

Re: [Java] Protected ou Public pour clone() ?

Message  Anthoblack le Jeu 25 Mar 2010, 16:42

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 Smile

Anthoblack

Nombre de messages : 764
Age : 28
Prénom : Anthony
Statut : Ex-étudiant
Localisation : Bruxelles
Date d'inscription : 11/03/2008

Revenir en haut Aller en bas

Re: [Java] Protected ou Public pour clone() ?

Message  trikman le Jeu 25 Mar 2010, 19:12

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

trikman

Nombre de messages : 68
Prénom : martin
Date d'inscription : 04/11/2009

Revenir en haut Aller en bas

Re: [Java] Protected ou Public pour clone() ?

Message  karemkadidola le Jeu 25 Mar 2010, 22:54

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.

karemkadidola

Nombre de messages : 244
Prénom : aimé
Date d'inscription : 13/10/2009

Revenir en haut Aller en bas

Re: [Java] Protected ou Public pour clone() ?

Message  Anthoblack le Ven 26 Mar 2010, 17:56

karemkadidola a écrit:...
Mettre de la ponctuation et passer à la ligne, c'est pas mal parfois Wink
Sinon ça me semble correct.

Anthoblack

Nombre de messages : 764
Age : 28
Prénom : Anthony
Statut : Ex-étudiant
Localisation : Bruxelles
Date d'inscription : 11/03/2008

Revenir en haut Aller en bas

Re: [Java] Protected ou Public pour clone() ?

Message  karemkadidola le Sam 27 Mar 2010, 21:50

tu as raison on dirait que j'étais entrain de chanter là...lol

karemkadidola

Nombre de messages : 244
Prénom : aimé
Date d'inscription : 13/10/2009

Revenir en haut Aller en bas

Re: [Java] Protected ou Public pour clone() ?

Message  Contenu sponsorisé Aujourd'hui à 14:31


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum