J'ai une base B b = new C();
b.methodWhichCallsMethodOnInterface();
3 Réponses :
Il convient correctement à la méthode1 () d'A parce que c'est la méthode d'interface. C'est le comportement correct et attendu des méthodes définies dans l'interface. P>
appeler Si vous appelez Je suppose que vous avez prisisalisé b.methodwhichcallsmethodoninterface () code> Appels
Méthode2 () code> à partir de l'interface A et
Méthode2 () code> de l'interface A appels
Méthode2 ( ) code> de l'interface A, je suppose que vous pensiez que vous pensiez
b.methodwhichcallsmethodoninterface () code> serait pour une raison quelconque faite
Méthode2 () code> de l'interface a appelé
méthode1 () code> de la classe C. p>
b.method1 () code> vous devez obtenir l'impression à partir de la classe C
Mais appeler l'autre fonction appellera l'interface A
méthodal1 () code> p>
b b = nouveau c () code> non? p>
Tout d'abord, Vous pouvez oublier l'interface interface B code> étendre
interface A code> afin que vous puissiez imaginer que:
A code> à partir de maintenant! Continuez avec votre code. P>
class C implements B{
@Override
public void method1() {
System.out.println("method1 printing from class C");
}
@Override
public void methodWhichCallsMethodOnInterface() {
method2();
}
default void method2() { // inherited from B
method1();
}
}
Compte tenu de votre exemple, qu'est-ce que
C code> a à voir avec elle?
ne peut pas reproduire . Veuillez fournir un exemple de reproductible minimal .
Le code que vous fournissez ne devrait rien faire du tout. Êtes-vous sûr de nous montrer le bon code? Vous ne pouvez pas directement instancier une instance de B, car B est une interface (qui est abstraite). Ainsi, au mieux, tout le code pourrait produire est une nullpointerexception, mais elle ne compile probablement pas.
@Davidschwartz B n'a pas de mise en œuvre pour la méthodeWHichCallsMethodoninterface. C'est la nervation de la norme en C qui est appelée quand je fais b.methodwhichcallsmethodoninterface ();
Votre code imprime simplement
"méthodal1 Impression de la classe C" code> comme il devrait
Je ne comprends pas comment la méthode1 de C est appelée directement à partir de l'interface A? I> C'est à quel point fonctionne le travail. La mise en œuvre est sélectionnée en fonction du type d'exécution du
B code>.