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 :

[POO] Méthodes : Surcharge, polymorphe, redéfinition


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 34
    Par défaut [POO] Méthodes : Surcharge, polymorphe, redéfinition
    Bonjour.

    Je sais que surcharger une méthode dans une classe reviens à à la réécrire, mais en modifiant le type, le nombre ou l'ordre de ses arguments.
    Je sais que redéfinir une méthode dans une classe fille reviens à réécrire le même corps (même nom, type de retour et arguments) mais à changer la manière dont la méthode traite les choses.

    Là où je bloque, c'est avec le polymorphisme. En fait, je ne comprends pas quelle différence il y a avec la redéfinition d'une méthode, je fais exactement la même chose, je garde la même structure et je change le code entre les accolades. Du coup à chaque fois que je redéfinis une méthode, je la rend polymorphe ?

    Merci à vous

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Le polymorphisme, c'est le fait de pouvoir substituer un objet à un autre similaire. Donc dire qu'une méthode est "polymorphe" n'a pas de sens puisque ce concept est lié aux classes.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 34
    Par défaut
    Merci pour ta réponse.

    J'apprends Java via un tutoriel
    Il parle bien de méthodes polymorphes, du coup je suis un peu perdu...
    Selon eux une méthod epolymorphe est une méthode pouvant être appelée sans avoir à se soucier du type de l'objet.

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Ce qu'il appelle une méthode polymorphe c'est bêtement une redéfinition.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 34
    Par défaut
    Ah très bien ! Merci, et il y a une autre chose que je ne saisis pas :

    J'ai le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for(Object v : tableau){
          System.out.println(v.decrisToi()+"\n");
    }
    La variable tableau contient des objets de type Ville et de type Capitale (Capitale hérite de Ville). Ce code ne fonctionne pas, car la méthode decrisToi() n'est pas définie dans la classe Object, et le tuto nous dis Vous devez savoir qu'une méthode n'est « invocable » par un objet que si celui-ci définit ladite méthode.. On me parle de covariance de variable, donc dans cette boucle, je ne manipule que des objets de type Object, mais qui contiennent des objets de type Ville ou Capitale. Du coup je ne comprends pas pourquoi ca plante, pourquoi est-ce que la JVM, voyant que decrisToi() n'est pas définie dans la classe Object, ne va pas regarder dans les classe Ville ou Capitale, en clair pourquoi est-ce qu'elle n'arrive pas à détecter le type de l'objet.

    Merci

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par Compassio Voir le message
    je ne manipule que des objets de type Object, mais qui contiennent des objets de type Ville ou Capitale.
    Ca, le compilateur ne le sait pas, on ne peux le savoir qu'à l'exécution, et le compilateur en java, il a besoin d'être sûr que la méthode existe.

    Donc soit Capitale extends Ville, alors il faut écrire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for(Ville v : tableau){
          System.out.println(v.decrisToi()+"\n");
    }
    Soit Capitale et Ville on un ancêtre commun qui contient la définition de decrisToi, alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for(GeoItem v : tableau){
          System.out.println(v.decrisToi()+"\n");
    }
    Soit tu a une interface commune à Ville et Capitale qui imposent que toutes deux ont un méthode decrisToi, alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for(AutoDecrivant v : tableau){
          System.out.println(v.decrisToi()+"\n");
    }

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

Discussions similaires

  1. [POO]Méthode récursive pour tester dépendances
    Par viviboss dans le forum Langage
    Réponses: 4
    Dernier message: 28/05/2007, 12h06
  2. [POO] Méthode abstraite PHP4
    Par joebarteam88 dans le forum Langage
    Réponses: 2
    Dernier message: 30/04/2007, 07h32
  3. Réponses: 4
    Dernier message: 17/03/2007, 01h06
  4. Réponses: 4
    Dernier message: 05/02/2007, 14h40
  5. méthodes surchargées
    Par ep31 dans le forum C++
    Réponses: 4
    Dernier message: 14/11/2005, 18h06

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