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

Java Discussion :

Surcharge de méthodes


Sujet :

Java

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Avril 2006
    Messages : 453
    Par défaut Surcharge de méthodes
    Bonjour,
    J'ai le code suivant:
    int Surface (int logueur, int largeur)
    {return longueur * largeur;}

    void Surface (int r) {
    int s= r*r*PI; System.out.println("surf = "+s);}

    Est ce que je peux parler de surcharge de la méthode Surface dans ce cas ?
    Merci.

  2. #2
    Membre expérimenté Avatar de kalina
    Femme Profil pro
    Développeur Java
    Inscrit en
    Avril 2009
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2009
    Messages : 220
    Par défaut
    oui, il s'agit bien d'une surchage!
    pour plus d'infos regarde ici:http://www.developpez.net/forums/d61...s-type-retour/

  3. #3
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 209
    Billets dans le blog
    52
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int Surface (int logueur, int largeur){
        return longueur * largeur;
    }
     
    void Surface (int r) {
        int s= r*r*PI; System.out.println("surf = "+s);
    }
    Cela c'est considéré comme de la surcharge. Bien que cela ne soit pas de la surcharge dû à l'héritage de classe...
    Citation Envoyé par wikipédia
    Some other languages, like Java, do not have default arguments. However, the same behaviour can be simulated by using method overloading to create overloaded methods of the same name, which take different numbers of arguments; and the versions with fewer arguments simply call the versions with more arguments, with the default arguments as the missing arguments:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int MyFunc(int a, int b) { return MyFunc(a, b, 12); }
    int MyFunc(int a, int b, int c) { /* main implementation here */ }
    Cela est considéré comme :
    Constructor overloading
    Cordialement,
    Patrick Kolodziejczyk.

    http://en.wikipedia.org/wiki/Default_argument
    http://en.wikipedia.org/wiki/Function_overloading
    http://fr.wikipedia.org/wiki/Polymor...nformatique%29
    http://fr.wikipedia.org/wiki/Surchar...nformatique%29
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par kolodz Voir le message
    Cela c'est considéré comme de la surcharge. Bien que cela ne soit pas de la surcharge dû à l'héritage de classe...
    "Considéré" euh... Quand on dit "surcharge," on veut dire ce genre de choses. L'idée de surcharge n'est pas associée à l'héritage, elle est juste possible par héritage.

    Et elle a d'autres intérêts que la possibilité de varier le nombre de paramètres (qui est aujourd'hui assez bien fait par les varargs en Java.)
    Ça peut aussi être juste des paramètres complètement différents, parce qu'on a des données d'entrées complètement différentes mais qu'on sait y appliquer le même traitement.

    Là où ça pèche et où ça fait "bizarre" pour de la surcharge, c'est qu'en principe des méthodes surchargées devraient faire grosso-merdo la même chose, pour éviter les confusions. Là c'est clairement pas le cas, c'est un mauvais usage de la surcharge.

    Citation Envoyé par kolodz Voir le message
    Cela est considéré comme : [Constructor overloading]
    ... Nope.
    Ça c'est quand on surcharge des constructeurs. Ce qu'on voit là, c'est des méthodes. Des méthodes mal nommées parce qu'elles commencent par une majuscule, mais des méthodes.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 209
    Billets dans le blog
    52
    Par défaut
    Effectivement...

    Pas les yeux en face des trous. J'ai pris les int void comme les opérateurs de visibilités qui ne sont pas donnée :s

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Avril 2006
    Messages : 453
    Par défaut
    Bonjour,
    Merci à tous pour vos réponses, mais tout cela est encore confus pour moi.
    Que dois je déduire finalement ?
    Merci.

  7. #7
    Membre éprouvé Avatar de Satch
    Homme Profil pro
    Hypnothérapeute - Magicien
    Inscrit en
    Mars 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Suisse

    Informations professionnelles :
    Activité : Hypnothérapeute - Magicien

    Informations forums :
    Inscription : Mars 2004
    Messages : 498
    Par défaut
    Citation Envoyé par yasinfo Voir le message
    Bonjour,
    Merci à tous pour vos réponses, mais tout cela est encore confus pour moi.
    Que dois je déduire finalement ?
    Merci.
    Que la surcharge, c'est quand un objet possède plusieurs méthodes ayant le même nom, mais un nombre et/ou type de paramètres différents.

    Dans ton cas, si tes méthodes Surface sont déclarées dans la même classe, ou l'une dans une classe A et l'autre dans une classe B qui étend A, alors c'est bien de la surcharge.

Discussions similaires

  1. [POO] Héritage et surcharge de méthodes
    Par defkid dans le forum Langage
    Réponses: 4
    Dernier message: 26/02/2007, 14h51
  2. surcharge de méthode
    Par Zen_Fou dans le forum Langage
    Réponses: 2
    Dernier message: 22/03/2006, 10h23
  3. [POO] Surcharge de méthode
    Par ouioui2000 dans le forum Langage
    Réponses: 4
    Dernier message: 09/03/2006, 15h25
  4. [Custom Tags] Problème avec une surcharge de méthode
    Par Strab dans le forum Taglibs
    Réponses: 19
    Dernier message: 26/08/2005, 16h34
  5. Comment surcharger la méthode OnClose d'un TFrame ?
    Par sdebrois dans le forum Composants VCL
    Réponses: 2
    Dernier message: 17/01/2005, 20h57

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