La technique que tu cites (délagation) correspond à l'héritage privé en C++. Quand on veut profiter d'un typage multiple pour une classe, il faut à la fois des interfaces et de la délation, pour profiter du polymorphisme. P.ex. : en C++
class A;
class B;
class C : A, B;
devient, en Java :
interface A {}
class A_I implements A {}
interface B {}
class B_I implements B {}
interface C extends A, B {}
class C_I extends A_I {
private B_I b_i;
/* refaire toutes les fonctions f de B : */
f() { b_i.f(); }
}
(Il faut choisir entre hériter de A_I, de B_I, ou d'aucun.)
(On fait aussi de C une interface pour pouvoir multi-hériter de C ensuite...)
Donc, c'est très lourd à écrire, mais c'est automatisable, mais c'est plus vraiment du Java...
[^] # Re: héritage multiple?
Posté par Sylvain Sauvage . En réponse à la dépêche Trolltech publie les avancées de Qt pour Java. Évalué à 2.
class A;
class B;
class C : A, B;
devient, en Java :
interface A {}
class A_I implements A {}
interface B {}
class B_I implements B {}
interface C extends A, B {}
class C_I extends A_I {
private B_I b_i;
/* refaire toutes les fonctions f de B : */
f() { b_i.f(); }
}
(Il faut choisir entre hériter de A_I, de B_I, ou d'aucun.)
(On fait aussi de C une interface pour pouvoir multi-hériter de C ensuite...)
Donc, c'est très lourd à écrire, mais c'est automatisable, mais c'est plus vraiment du Java...