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 :

Utilisation de This ()


Sujet :

avec Java

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 63
    Par défaut Utilisation de This ()
    Bonjour,

    dans ce code, que veut dire le this(). Je comprends quand on utilise le this.argent = argent + 500 mais là je ne comprends pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    class A {
    public A(){System.out.print(”Hello”);};
    public A(int i) {this(); System.out.println(”Bonjour ”+i);};
    }
    A vrai dire la question posé est que retourne A(69), j'aurais répondu (Bonjour 69), mais la réponse est (Hello Bonjour 69). Est ce que cela aurait un rapport avec ce this ?

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Déjà, on va utiliser une vue moins compacte de ton code, plus lisible :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     class A {
       public A() {
          System.out.print(”Hello”);
       }
       public A(int i) {
           this(); 
           System.out.println(”Bonjour ”+i);
       }
    }
    Ici, le this() fait référence au constructeur sans argument, celui qui affiche "Hello" : il s'agit d'un appel explicite à ce constructeur. Un new A(42) affichera donc "Hello", puis "Bonjour 42" (exactement "HelloBonjour 42").

    Un exemple plus commun :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     class A {
       private final byte[] buffer;
       public A() {
          this( 1024 ); // appel le constructeur A(int size) avec 1024 en paramètre
       }
       public A(int size) { 
          if ( size<1 ) throw new IllegalArgumentException("Buffer too short: " + size);
          buffer = new byte[size];
       }
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 095
    Par défaut
    Exécuter le code et mettre des commentaires sur les point qui te semblait bizarre t'aurais permis d'avoir la réponse par toi même en regardant ce qu'il se passait...
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 63
    Par défaut
    Ok merci, je comprends mieux.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 133
    Par défaut
    Bonjour,
    C'est juste pour compléter.

    Si le mot this n'existait pas en Java.Dans ton code à la place de this(), on aurait mis A(). Et ton code s'écrirait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    class A {
    public A(){System.out.print(”Hello”);};
    public A(int i) {
    A();
    System.out.println(”Bonjour ”+i);};
    }
    Malheureusement, c'est interdit en java. Quand on fait appel un constructeur dans un autre constructeur, on ne doit pas garder le même nom sans doute pour éviter toute ambiguïté. Dans ton cas le constructeur A() est appelé par le constructeur A(int i), puisque le constructeur A() est à l'intérieur du constructeur A(int i), il ne doit pas garder le même nom A. Il faut le remplacer par le mot clé this(). Et this( ) doit être la première instruction dans le constructeur qui l'a fait appel de telle sorte que

    dans ton cas, tu n'écriras donc pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public A(int i) {
     System.out.println(”Bonjour ”+i);
    this();
    }
    mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public A(int i) {
    this();
     System.out.println(”Bonjour ”+i);
     }

    Si un constructeur B(x,z,t,...), où x,z,t... sont des paramètres, est remplacé par this, on écrira this sous la forme this(x,z,t,..) en tenant compte du nombre de paramètres de ce constructeur

Discussions similaires

  1. Utilisation de this
    Par ttone dans le forum Débuter
    Réponses: 27
    Dernier message: 09/10/2008, 22h00
  2. utilisation du this
    Par kenny.kev dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 08/04/2008, 14h36
  3. utilisation de this[]
    Par michpc dans le forum Flash
    Réponses: 2
    Dernier message: 01/02/2007, 12h59
  4. les classes et c# .. quand utiliser le "this" ?
    Par jgbid123 dans le forum Windows
    Réponses: 3
    Dernier message: 01/12/2006, 22h04
  5. [POO] Erreur lors de l'utilisation de $this en PHP5
    Par Ekimasu dans le forum Langage
    Réponses: 4
    Dernier message: 03/11/2006, 20h21

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