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

avec Java Discussion :

La fonction clone() equivaut-elle à cela ?


Sujet :

avec Java

  1. #1
    Invité
    Invité(e)
    Par défaut La fonction clone() equivaut-elle à cela ?
    Est-ce que la fonction clone équivaut à cela:

    Est-ce que cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Object p1;
     
    object p3=new object(p1);
    équivaut à cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Object p1;
     
    object p3= p1.clone();

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Non...

    En Java, il n'y a pas de constructeur par copie implicite. Et même si rien n'empêche de faire des constructeurs par copie dans ses classes, ce n'est pas une pratique courante et on n'en trouvera pas dans les autres classes Java.
    Donc en général, object p3=new object(p1); ne sera pas valide, puisque le constructeur appelé n'existera pas.

    Par ailleurs, la méthode clone() a un effet par défaut, qui est de créer une nouvelle instance et d'y copier tous les champs de l'instance en cours. Mais la méthode clone() peut être redéfinie, de sorte d'avoir n'importe quel effet autre. Ce qui est utile par exemple quand on souhaite un clonage plus profond que par défaut.

    On ne peut donc pas parler d'équivalence. Chaque chose fait ce qu'elle fait.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci pour ta reponse mais j'avais cru que le premier créer un nouvel objet avec les memes caractéristiques que p1 et que le deuxieme clone p1 (donc qui créer aussi un deuxieme objet avec les meme caracteristique que p1 aussi) donc ce qui revient au meme

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Ben comme je te l'ai dit le premier n'existe pas, donc il fait rien, tu peux pas mettre ça dans ton programme, c'est tout.

    Quant au second, oui, il fait ça par défaut, mais vu que clone() peut être redéfinie, ça dépend si clone() a été redéfinie ou pas, et si oui pour quoi faire, bien sûr.

    Quoi qu'il en soit, on ne peut pas être équivalent avec soi-même. Comme le premier n'existe pas, il n'y a que le second, et donc il n'est pas équivalent.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    personne p1;
     
    personne p3=new personne(p1);
    Meme avec ceci?

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Même avec ceci. Tu as juste remplacé object par personne. Il n'y a pas de classe object ni personne dans Java, donc je suppose que tu parles de n'importe quelle classe général.

    Et en général, les classes Java n'ont pas de constructeur de ce genre et cette syntaxe ne marche pas.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Invité
    Invité(e)
    Par défaut
    Il m'a semblé que la classe "Object" est la classe mère de tous

  8. #8
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Oui, avec un O majuscule.

    Et elle n'a pas de constructeur avec paramètre, et on ne peut pas appeler clone() sur une variable de type Object.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. la fonction run est elle obligatoire ?
    Par asoka13 dans le forum Applets
    Réponses: 6
    Dernier message: 13/11/2009, 09h33
  2. Réponses: 17
    Dernier message: 05/02/2009, 15h48
  3. La fonction display est-elle fonctionnelle sous ie7
    Par develop' peur ! dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 11/02/2008, 17h42
  4. Réponses: 3
    Dernier message: 04/03/2007, 09h34
  5. La fonction fgets est-elle compatible Windows/Unix ?
    Par ashurai dans le forum Langage
    Réponses: 1
    Dernier message: 05/04/2006, 17h59

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