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 :

[INFO]Signature d'une méthode


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 4
    Par défaut [INFO]Signature d'une méthode
    Salut à tous,
    Je suis en train de lire un article sur java ou on parle de la signature d'une méthode.
    Est ce que la signature c'est par exemple la valeur de x renvoyé par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public int GetX() {return x;}
    Merci d'avance.

    [ Modéré par SEMPERE Benjamin ]
    Ajout d'un tag dans le titre
    Modification du titre
    Ajout des balises code
    Les Règles du Forum

  2. #2
    Membre éclairé Avatar de biozaxx
    Profil pro
    Inscrit en
    Août 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 403
    Par défaut
    salut ,

    la signature c'et la description des parametres que tu fournis à ta methode:

    tu peux avoir dans ta classe plusieurs methodes avec le même nom si les signatures sont differentes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    public String maMethode(ArrayList list){}
     
    public String maMethode(String arg1, String arg2){}

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 882
    Par défaut
    Citation Envoyé par biozaxx
    salut ,

    la signature c'et la description des parametres que tu fournis à ta methode:

    tu peux avoir dans ta classe plusieurs methodes avec le même nom si les signatures sont differentes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    public String maMethode(ArrayList list){}
     
    public String maMethode(String arg1, String arg2){}
    oui dans ce cas la, on parle d'overloading de méthode. Un méthode en Java est identifié par:

    - Sa classe d'appartenance (package inclus) ex: "com.toto.project.Classe"
    - Son nom ex: "maMethode"
    - Sa liste d'aguments (nombre et type)

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 4
    Par défaut
    Merci beaucoup pour vos réponses, maintenant tout est clair !

    Merci aussi à l'admin pour la modération je recommencerai plus

  5. #5
    Membre éprouvé Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Par défaut
    bonjour,
    juste une précision il me semble que le type de retour ne fait pas partie de la signature non ???

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 882
    Par défaut
    Citation Envoyé par BainE
    bonjour,
    juste une précision il me semble que le type de retour ne fait pas partie de la signature non ???
    oui tout à fait, cela découle de ce que j'ai ecrit plus haut (en esperant que boobi ait fait le discernement )

  7. #7
    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 BainE
    bonjour,
    juste une précision il me semble que le type de retour ne fait pas partie de la signature non ???
    En effet le type de retour ne fait pas partie de la signature :
    Citation Envoyé par SEMPERE Benjamin
    - Sa classe d'appartenance (package inclus) ex: "com.toto.project.Classe"
    - Son nom ex: "maMethode"
    - Sa liste d'aguments (nombre et type)
    C'est d'ailleurs la raison pour laquelle on ne peut pas avoir le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public Integer getValue() { return iValue; }
    public Float getValue() { return fValue; }
    car les deux méthodes ont la même signature...

    Une exception toutefois, le compilateur (java 5.0 seulement il me semble) peut ajouter des méthodes avec la même signature mais un type de retour différent...

    a++

  8. #8
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 882
    Par défaut
    Citation Envoyé par adiGuba
    Une exception toutefois, le compilateur (java 5.0 seulement il me semble) peut ajouter des méthodes avec la même signature mais un type de retour différent...

    a++
    Salut, je ne crois pas qu'on peut avoir un overloading autorisé si
    le nom de la méthode et ses arguments sont identiques et que le type de retour est différent.

  9. #9
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 882
    Par défaut
    Il est vrai que cela est possible lors de l'overriding (règles sur les types covariant)

    exemple dans la superclasse:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public SimpleDateFormat getDateFormat(...){
     
    ...
    return...;
    }
    dans la sousclasse:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public DateFormat getDateFormat(...){
     
    ...
    return...;
    }
    Ici l'overrriding est autorisé (Uniquement avec Java5!!!)

  10. #10
    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
    @SEMPERE Benjamin >> Justement lorsque tu modifies le type de retour dans la sous-classe, le compilateur rajoute automatiquement la méthode avec le type de retour 'original' qui se contente d'appeller la première... Ceci afin de rester compatible avec les définitions de la classe/interface parente...

    Si tu listes les méthodes avec l'API de reflection tu verras que tu obtiens bien deux méthodes différentes (une qui retourne un DateFormat et l'autre un SimpleDateFormat).

    Note : dans ton exemple tu as inversé la classe-fille et la super-classe car le type de retour de la méthode de la classe fille doit être une spécialisation de celui de la classe mère (ie: dans la méthode classe fille tu peux retourner un SimpleDateFormat si la classe mère renvoit un DateFormat puisque SimpleDateFormat étend DateFormat).

    Et il peut y avoir le même cas lorsqu'on hérite/implemente avec les Generics lorsqu'on spécifie le type exact du paramétrage de la sous-classe/interface...

    Mais bon tout cela est presque hors-sujet...

    a++

  11. #11
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 882
    Par défaut
    Citation Envoyé par adiGuba
    Note : dans ton exemple tu as inversé la classe-fille et la super-classe car le type de retour de la méthode de la classe fille doit être une spécialisation de celui de la classe mère (ie: dans la méthode classe fille tu peux retourner un SimpleDateFormat si la classe mère renvoit un DateFormat puisque SimpleDateFormat étend DateFormat).
    Oui effectivement j'ai inversé les deux
    Je suis allé trop vite...

    je me corrige de ce pas:
    Il est vrai que cela est possible lors de l'overriding (règles sur les types covariant)

    exemple dans la superclasse:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public DateFormat getDateFormat(...){
     
    ...
    return...;
    }
    dans la sousclasse:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public SimpleDateFormat getDateFormat(...){
     
    ...
    return...;
    }
    Ici l'overrriding est autorisé (Uniquement avec Java5!!!)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 06/01/2011, 16h28
  2. Transient dans la signature d'une méthode ?
    Par benwit dans le forum Langage
    Réponses: 2
    Dernier message: 02/01/2010, 20h28
  3. Récupérer la signature d'une méthode.
    Par dingoth dans le forum Général Java
    Réponses: 3
    Dernier message: 21/10/2009, 16h08
  4. Réponses: 4
    Dernier message: 25/03/2009, 15h18
  5. Réponses: 1
    Dernier message: 05/07/2007, 08h34

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