héritage multiple

héritage multiple - Java - Programmation

Marsh Posté le 16-04-2005 à 03:25:51    

Salut, je voudrais être sûr d'un truc :
- j'ai une classe de base à laquelle je compte ajouter des fonctionnalités.
- J'ai différents sets de fonctionnalités et je dois pouvoir ajouter plusieurs sets à ma classe.
- Je dois aussi pouvoir utiliser ces fonctionnalités à partir d'une autre classe en passant la première comme argument.
 
Mon problème est que :
- si je passe comme type de classe celui de la classe de base (une abstract), je n'aurai pas accès aux fonctionnalités (évidemment)
- si je construits tout un tas de classe "extends" ma classe de base, je ne peux plus passer un type particulier (je ne peux pas ordonner mes héritages sous forme d'un arbre par ex)
 
Donc je me dis pourquoi pas utiliser des interfaces ...
 
Bref, si je prépare des interfaces pour mes sets de fonctionnalités, pourrais-je passer ma classe sous un type ayant le nom de mes interfaces ?
ex :  
public class A implements B,C {
   public B returnB() { return this; }
   public C returnC() { return this; }
}
--> ça marche ça ???
(merci pour vos réponses)


Message édité par TheRom_S le 16-04-2005 à 03:26:46

---------------
The Rom's, à votre service
Reply

Marsh Posté le 16-04-2005 à 03:25:51   

Reply

Marsh Posté le 16-04-2005 à 09:38:24    

A ta place je regarderais plutôt du côté du pattern decorator, si j'ai bien compris ton problème.

Reply

Marsh Posté le 16-04-2005 à 12:01:35    

TheRom_S a écrit :


public class A implements B,C {
   public B returnB() { return this; }
   public C returnC() { return this; }
}
--> ça marche ça ???
(merci pour vos réponses)


oui mais ca sert à rien. ta classe A "est un" B et "est un" C. Les méthodes sont inutiles :

Code :
  1. A a = nes A();
  2. // tu veux la fonctionnlaité des interfaces B
  3. // avec ta méthode :
  4. B b = a.returnB();
  5. // sans ta méthode :
  6. B b2 = a;

Reply

Marsh Posté le 16-04-2005 à 15:40:32    

gizmo a écrit :

A ta place je regarderais plutôt du côté du pattern decorator, si j'ai bien compris ton problème.


ce pattern est pas mal, mais pas adapté à mon cas pour d'autres raisons ...

benou a écrit :

oui mais ca sert à rien. ta classe A "est un" B et "est un" C.


oui c'est juste l'exemple le plus simple à écrire que j'ai trouvé, au final ça aurait plutôt l'air de :
class D : void truc(B classB) { ... }
et l'appel : classD.truc(classA);
 
bref ca marche, merci à vous deux


---------------
The Rom's, à votre service
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed