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 :

Compréhension des Méthodes défaut dans une interface


Sujet :

Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Juillet 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2020
    Messages : 4
    Par défaut Compréhension des Méthodes défaut dans une interface
    Bonjour,

    J'étudie actuellement la programmation Java et je me trouve confronté à un problème.
    Je ne comprends pas les Méthodes défaut dans une interface.
    J'ai le code suivant:

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    public interface Mitose extends Reproduction {
    	public static void description() {
    		Reproduction.description();
    		System.out.println("Redéfinie dans Mitose.java");
    	}
     
    	default void reproduire() {
    		System.out.println("Je me divise !");
    	}
    }
     
    public interface Pondre extends Reproduction {
     
    	public static void description() {
    		Reproduction.description();
    		System.out.println("Redéfinie dans Pondre.java");
    	}
     
     
    	default void reproduire() {
    		System.out.println("Je ponds des oeufs !");
    	}
     
    }
     
    public class Alien implements Pondre, Mitose {
     
    	public void reproduire() {
     
    		System.out.println("Je suis un alien et :");
    		Pondre.super.reproduire();
    		Mitose.super.reproduire();
     
    	}
    }
    Mais à la place d'avoir le résultat attendu à savoir:

    Je suis un alien et :
    Je ponds des oeufs !
    Je me divise
    Je me retrouve avec le résultat suivant:

    Méthode statique dans une interface
    Méthode statique dans une interface
    Redéfinie dans Pondre.java
    Méthode statique dans une interface
    Redéfinie dans Mitose.java
    J'ai la dernière version d'Eclipse et les dernières versions de Java.
    J'espère que vous pourrez m'aider.

    Merci par avance pour votre aide.

  2. #2
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 325
    Billets dans le blog
    12
    Par défaut
    Salut,

    N'hésite pas à rajouter ton interface Reproduction et ta classe contenant le main() dans ton bloc de code.

    A+
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Juillet 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2020
    Messages : 4
    Par défaut
    Oui, désolé j'ai oublié de rajouter ces deux classes.
    Dans la classe Reproduction j'ai:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public interface Reproduction {
     
        public static void description() {
     
            System.out.println("Méthode statique dans une interface");
     
        }
     
    }
    Et dans ma classe main j'ai cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class Main {
     
    	public static void main(String[] args) {
     
    		Reproduction.description();
            Pondre.description();
            Mitose.description();     
     
    	}
     
    }
    Merci pour votre aide.

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 577
    Par défaut
    Hello,

    je ne vois pas en quoi ce code devrait faire intervenir une méthode par défaut, quelle qu'elle soit.

    Donc je suppose qu'une des choses à savoir à propos des méthode par défaut, c'est que ce ne sont pas des méthodes qui vont être appelées comme ça, sans qu'on le leur demande, sans raison et n'importe quand, juste parce que ce sont des méthodes par défaut.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre à l'essai
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Juillet 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2020
    Messages : 4
    Par défaut
    Salut Thelvin,

    Merci pour ta réponse; après avoir lu ton commentaire je suis tout à fait d'accord avec toi.
    Dans le cours que je suis, ils disent (si je comprends bien leurs observations) que dans la classe Alien on fait appel au deux interfaces filles (Pondre et Mitose) et que le résultat devrait ce qui est codé dans la partie reproduction de la classe Alien à savoir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	System.out.println("Je suis un alien et :");
    		Pondre.super.reproduire();
    		Mitose.super.reproduire();
    et ainsi reprendre la partie default des interfaces Pondre et Mitose.

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 577
    Par défaut
    Ah. Pourtant non, pas du tout.

    Tout cela est dans la méthode reproduire(), et elle n'est pas appelée donc... Peu importe ce qu'il y a dedans.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre à l'essai
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Juillet 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2020
    Messages : 4
    Par défaut
    Ok, parfait, merci pour votre aide.
    Bon weekend.

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

Discussions similaires

  1. Récuperer des positions absolues dans une interface
    Par Lelio1407 dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 19/06/2012, 12h00
  2. Appeler une méthode définie dans une interface
    Par cedric.daniel dans le forum C#
    Réponses: 2
    Dernier message: 03/03/2009, 17h21
  3. Réponses: 1
    Dernier message: 10/01/2009, 17h34
  4. Intégrer des programmes dans une interface graphique avec GUIDE
    Par maserati222e dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 24/05/2007, 11h30
  5. Réponses: 16
    Dernier message: 26/10/2006, 16h17

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