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 :

Interface et methode surchargée


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Par défaut Interface et methode surchargée
    Bonjour,
    Une de mes classes surcharge une des méthodes de l'interface qu'elle implémente.
    La méthode abstraite de l'interface n'attend pas de parametre d'entrée, ma surcharge consiste dans la classe en question à en affecter un (String).

    Or quand j'appele cette méthode concernant la classe en question, j'ai l'erreur : maMethode() in monPackage.monInterface cannot be applied to (java.lang.String)
    On peut pas surcharger une méthode implementé?
    Merci de votre aide

  2. #2
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Il y a une diférence entre surcharge et redéfinition.
    Dans le cas de l'implémentation d'une interface tu dois d'abord redéfinir la méthode abstraite avant de pouvoir la surchargé (à moins de rendre ta classe abstraite) .

    Cf :
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  3. #3
    Membre éprouvé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Par défaut
    J'ai lu
    on doit obligatoirement conserver la signature
    exacte de la méthode d'origine : c'est le contrat que l'on doit respecter.
    Toutefois, il n'est pas figé et il est donc possible de modifier certains
    éléments.
    Dans mon cas je modifie la signature en imposant un parametre en entrée dans la classe qui implémente de l'interface, est-ce un élèment du contrat modifiable?



    Voila mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public interface MonInterface {
    //Services communs 
    ...
    public abstract void maMethode();//surchargée dans la classe Maclasse
    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public class Maclasse implements MonInterface{
    .....
    public void maMethode(){
    }//telle que dans l'interface
    //ci dessous surchargée pour les besoins de la classe.
    public void maMethode(String monString){
    ....
    }

  4. #4
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Serait-il possible que tu appelles ta méthode maMethode(String monString) depuis un objet déclaré en temps que MonInterface ?
    Un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MonInterface obj = new MaClasse();
    obj.maMethode("string");
    Si c'est le cas c'est normal il est normal que tu ais une erreur (l'interface ne connaît pas la surcharge) et il te faut alors déclarer (ou transtyper) ton objet en MacClasse.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MaClasse obj = new MaClasse();
    obj.maMethode("string");
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MonInterface obj = new MaClasse();
    MaClasse objTemp = (MaClasse) obj;
    objTemp.maMethode("string");
    Si ce n'est pas ça, montre nous le code qui provoque l'erreur.
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  5. #5
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Citation Envoyé par totoche
    J'ai lu

    on doit obligatoirement conserver la signature
    exacte de la méthode d'origine : c'est le contrat que l'on doit respecter.
    Toutefois, il n'est pas figé et il est donc possible de modifier certains
    éléments.
    Dans mon cas je modifie la signature en imposant un parametre en entrée dans la classe qui implémente de l'interface, est-ce un élèment du contrat modifiable?
    Nop, si tu lis bien dans la , tu peux élargir la visibilité, modifier les exceptions jetées ou le type de retour (via la covariance): toi, tu as modifié la signature ce n'est plus de la redéfinition ta nouvelle méthode n'est pas accessible depuis l'interface.

  6. #6
    Membre éprouvé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Par défaut
    C'est presque ça :
    Serait-il possible que tu appelles ta méthode maMethode(String monString) depuis un objet déclaré en temps que MonInterface ?
    je crée un tableau d'ojet capables d'implémenter l'interface
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    //Dans mon cas j'ai une interface  ChambresInterface  et une  classe Hotel, 
    //reliées par un lien de composition 
    public class Hotel {
    ...
    ChambresInterface[] lesChambres
    
    //********dans la classe qui gére l'interface au sens ihm
    public class CadreHotel extends javax.swing.JFrame {
    
        private Hotel HotelRepresente;
    
    public CCadreHotel(Hotel HotelARepresente){
            this();//initialisation  de la fenetre (netBeans)
            this.HotelRepresente = lHotelARepresente;
    
    
       private void btnEnleverActionPerformed(java.awt.event.ActionEvent evt) {                                           
    if(this.cbxChambre.getSelectedIndex() == 0){
    String nomChambre;
    nomChambre = this.txtnomChambre.getText();
    this.HotelRepresente.lesChambres[0].libererChambre(nomChambre);} // ici erreur
    else
    this.HotelRepresente.lesChambres[0].libererChambre();
    }
    Merci de ton aide

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 08/02/2008, 14h58
  2. Réponses: 5
    Dernier message: 13/02/2007, 08h53
  3. [POO] Interface et méthode abstraite en PHP5
    Par Invité dans le forum Langage
    Réponses: 9
    Dernier message: 24/04/2006, 00h54
  4. Réponses: 2
    Dernier message: 24/10/2005, 10h23

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