Bonjour,

est-il possible d'implémenter séparément des méthodes provenant d'interfaces différentes mais ayant la même signature ?

Exemple :
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
interface I1
{
        void f();
}
interface I2
{
        void f();
}
class A implements I1, I2
{
        public void f()
        {
                System.out.println("f");
        }
}
public class Test
{
        public static void main(java.lang.String[] args)
        {
                I1 i1 = new A();
                I2 i2 = new A();
                A a = new A();
                i1.f();
                i2.f();
                a.f();
        }
}
Dans cet exemple les trois appels à "f" sont corrects et invoque tous "A.f".

Mais est-il possible de définir dans "A" les méthodes "I1.f" et "I2.f" en plus de "A.f" afin que :
"i1.f()" invoque l'implémentation par "A" de "I1.f",
"i2.f()" invoque l'implémentation par "A" de "I2.f",
"a.f()" invoque une nouvelle méthode "A.f" n'ayant pas de lien avec "I1.f" et "I2.f" ?

A priori, comme le masquage de méthode n'est pas possible en Java, la dernière proposition n'est pas possible en Java, mais est-il au moins possible d'implémenter "I1.f" et "I2.f" séparément ?

Merci.