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 :

3 manieres de créer un objet !


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif  
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 497
    Par défaut 3 manieres de créer un objet !
    Bonjour,

    il y a 3 façon de créer un objets en Java :

    1 - // par instanciation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Rectangle a = new Rectangle();
    2 - // Par Clonage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Rectangle a = new Rectangle();
     
    Rectangle b = null;
    		try {
    			b = (Rectangle) a.clone();
     
    		} catch (CloneNotSupportedException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    3 - // Et ca, ca s'appelle comment ? Castage ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Rectangle a = new Rectangle();
    Rectangle c = (Rectangle) a;

    merci

  2. #2
    Membre éclairé
    Inscrit en
    Mars 2004
    Messages
    247
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 247
    Par défaut
    Si je me trompe pas dans le troisieme cas tu ne crée pas de nouvel objet, si tu modifies c tu modifies a également. C'est pas comme dans les 2 premiers cas ou tu as deux objets distincts.

    De plus le cast ne sert à rien. c est de type rectangle et a également.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Rectangle a = new Rectangle();
    Rectangle c = a;
    Marche tout aussi bien.

  3. #3
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par 19cmos83 Voir le message
    3 - // Et ca, ca s'appelle comment ? Castage ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Rectangle a = new Rectangle();
    Rectangle c = (Rectangle) a;
    Oui c'est un cast (ou transtypage en "français"), mais ce n'est en aucun cas une création d'objet mais simplement un changement de son type déclaré.

    a++

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 497
    Par défaut
    Ok, ouais mais là,


    Rectangle a; // // je crée une ref
    a = new Rectangle(); // et une instanciation, mon objet est bien créé.

    Rectangle c ; // la je crée une reference, pas encore d'objet.
    c = (Rectangle) a; // la, je cast quoi en quoi ?

    comment se fait il qu'après cette ligne mon objet "c" est créé ?

    l'espace alloué de 'c' se fait a quel moment ?

  5. #5
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    bonjour,

    l'objet c n'est pas crée, il utilise la même référence en mémoire que a
    => toute modification de a sera automatiquement répercuté sur c

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    java.awt.Rectangle a = new java.awt.Rectangle();
    java.awt.Rectangle c = a;
     
    //valeur de c
    System.out.println(c.toString());
    a.setBounds(0,1,2,3);
    System.out.println(c.toString());
    donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    java.awt.Rectangle[x=0,y=0,width=0,height=0]
    java.awt.Rectangle[x=0,y=1,width=2,height=3]

  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par 19cmos83 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Rectangle c ; // la je crée une reference, pas encore d'objet.
    c = (Rectangle) a; // la, je cast quoi en quoi ?
    Déjà comme ici les types sont le cast est inutile c'est directement une affectation :
    On a deux références qui pointent vers un seul et unique objet ! Aucun nouvel objet n'est créé...

    a++

Discussions similaires

  1. Travailler / Créer des objets complexes
    Par Ekinoks dans le forum OpenGL
    Réponses: 3
    Dernier message: 22/08/2005, 14h38
  2. [C#] Créer des objets Winform personnalisés
    Par KibitO dans le forum Windows Forms
    Réponses: 8
    Dernier message: 31/05/2005, 17h09
  3. [Info]Créer un objet persistent
    Par seb55555 dans le forum JDBC
    Réponses: 5
    Dernier message: 22/02/2005, 16h53
  4. [VBA ActivX] Créer un objet Name [OWC10.Spreadsheet.10]
    Par FRED.G dans le forum VBA Access
    Réponses: 12
    Dernier message: 06/07/2004, 16h29
  5. Créer des objets sur la pile ?
    Par Cornell dans le forum Langage
    Réponses: 8
    Dernier message: 03/03/2003, 11h47

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