Compréhension des Méthodes défaut dans une interface
2 réponses
CyrilleRabut
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:
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 a 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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Yliur
Le Sat, 11 Jul 2020 12:26:54 -0500, CyrilleRabut a écrit :
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: public interface Mitose extends Reproduction { public static void description() { Reproduction.description(); System.out.println("Redéfinie dans Mitose.java"); } [...] 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
"static" c'est pour les "méthodes de classe", en quelque sorte de simples fonctions qui ne sont pas concernées par le polymorphisme. Il faut sans doute l'enlever des différents endroits où il se trouve dans ton code, le fonctionnement normal des méthodes c'est sans ce modificateur.
Le Sat, 11 Jul 2020 12:26:54 -0500, CyrilleRabut a écrit :
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:
public interface Mitose extends Reproduction {
public static void description() {
Reproduction.description();
System.out.println("Redéfinie dans Mitose.java");
}
[...]
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
"static" c'est pour les "méthodes de classe", en quelque sorte de simples
fonctions qui ne sont pas concernées par le polymorphisme.
Il faut sans doute l'enlever des différents endroits où il se trouve dans
ton code, le fonctionnement normal des méthodes c'est sans ce
modificateur.
Le Sat, 11 Jul 2020 12:26:54 -0500, CyrilleRabut a écrit :
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: public interface Mitose extends Reproduction { public static void description() { Reproduction.description(); System.out.println("Redéfinie dans Mitose.java"); } [...] 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
"static" c'est pour les "méthodes de classe", en quelque sorte de simples fonctions qui ne sont pas concernées par le polymorphisme. Il faut sans doute l'enlever des différents endroits où il se trouve dans ton code, le fonctionnement normal des méthodes c'est sans ce modificateur.
David Larochette
Le 11/07/2020 à 19:26, CyrilleRabut a écrit :
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:
[…]
Pondre.super.reproduire(); Mitose.super.reproduire(); } } Mais a 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
En appelant Pondre.super.reproduire(), tu fais référence à l'implémentation de reproduire() de l'interface Reproduction (qui est à la fois le super de Pondre et de Mitose, et qui doit contenir un appel à description()). Pour appeler les implémentations de Pondre et de Mitose, tu peux passer par un cast : ((Pondre)this).reproduire(); ((Mitose)this).reproduire(); Ce qui devrait donner le résultat attendu.
Le 11/07/2020 à 19:26, CyrilleRabut a écrit :
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:
Mais a 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
En appelant Pondre.super.reproduire(), tu fais référence à
l'implémentation de reproduire() de l'interface Reproduction (qui est à
la fois le super de Pondre et de Mitose, et qui doit contenir un appel à
description()).
Pour appeler les implémentations de Pondre et de Mitose, tu peux passer
par un cast :
((Pondre)this).reproduire();
((Mitose)this).reproduire();
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:
[…]
Pondre.super.reproduire(); Mitose.super.reproduire(); } } Mais a 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
En appelant Pondre.super.reproduire(), tu fais référence à l'implémentation de reproduire() de l'interface Reproduction (qui est à la fois le super de Pondre et de Mitose, et qui doit contenir un appel à description()). Pour appeler les implémentations de Pondre et de Mitose, tu peux passer par un cast : ((Pondre)this).reproduire(); ((Mitose)this).reproduire(); Ce qui devrait donner le résultat attendu.