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 :

Redéfinition d'une méthode ayant sa signature à 2 endroits


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de ploxien
    Inscrit en
    Février 2006
    Messages
    467
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2006
    Messages : 467
    Par défaut Redéfinition d'une méthode ayant sa signature à 2 endroits
    Hello,

    Je cherche à redéfinir une méthode d'une interface que j'implémente, mais il y a une méthode avec la même signature dans une classe abstraite dont j'hérite, et du coup c'est comme s'il ne voyait pas la méthode de l'interface.

    Un exemple simple:
    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
    interface ITest {
    	public Integer test(String param1);
    }
     
    abstract class ATest {
    	public abstract String test(String param1);
    }
     
    public class Test extends ATest implements ITest{
    	// je voudrais overrider la méthode de l'interface...
    	//  mais: "The return type is incompatible with ATest.test(String)"
    	//  comment spécifier que c'est la méthode de 
    	//  l'interface et non celle de la classe abstraite que je veux redéfinir??
    	@Override
    	public Integer test(String param1) { 
    		return 4;
    	}	
    }
    Y a-t-il un moyen??

    Merci

  2. #2
    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
    Salut,


    Tu ne peux pas avoir deux méthodes avec la même signature mais un type de retour différent...

    a++

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 338
    Par défaut Type de retour différent
    A partir de java 1.5 on a la possibilité de faire la covariance de type de retour pour une méthode redéfinie dans une classe dérivée càd:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class A {
     A method() { //... }
    }
     
    class B extends A {
     B method() { //... }
    }
    Donc il suffit de déclarer ta méthode test dans ton interface ou la classe abstraite commet suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public Object test(String param1);
    a++

  4. #4
    Membre éclairé Avatar de ploxien
    Inscrit en
    Février 2006
    Messages
    467
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2006
    Messages : 467
    Par défaut
    Oui, mais le problème est que l'interface et la classe abstraite, c'est pas moi qui les crée. Elles viennent d'une librairie

    Mais merci

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 338
    Par défaut redéfinition
    Dans ce cas c'est impossible d'implémenter et étendre la classe abstraire.
    a++

Discussions similaires

  1. Appeler une méthode ayant un tableau d'objets pour paramètres
    Par Phil564 dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 11/12/2014, 08h03
  2. Travailler avec une méthode ayant plusieurs types de retour
    Par fafoula dans le forum Général Java
    Réponses: 4
    Dernier message: 27/07/2012, 10h23
  3. Réponses: 3
    Dernier message: 04/02/2010, 11h03
  4. [XML] Redéfinition d'une méthode de minidom
    Par Rupella dans le forum Général Python
    Réponses: 3
    Dernier message: 23/09/2009, 15h43
  5. Redéfinition d'une méthode de QComboBox
    Par gassi64 dans le forum Qt
    Réponses: 8
    Dernier message: 16/07/2009, 13h41

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