Héritage multiple en JAVA

Résolu
miudem Messages postés 16 Date d'inscription dimanche 6 avril 2008 Statut Membre Dernière intervention 5 mai 2010 - 7 nov. 2008 à 21:07
soukaouta Messages postés 39 Date d'inscription vendredi 29 octobre 2010 Statut Membre Dernière intervention 16 novembre 2012 - 9 avril 2012 à 20:25
Extends, Implements, Interface


Salut,
Considérons deux classes A et B tels que:

public class A {
Attribut_A1;
Attribut_A2;

ConstructeurA(){ Code... }

Méthodes_A1(){ Code... }
Méthodes_A2(){ Code... }
}

Et,

public class B {
Attribut_B1;
Attribut_B2;

ConstructeurB(){ Code... }

Méthodes_B1(){ Code... }
Méthodes_B2(){ Code... }
}

Et maintenant considérons que une calsse C veut hériter des deux classes A et B. On sais que il existe pas l'héritage multiple en java, et on sais que java intoduit ce qu'on appelle INTERFACE... Mais je que je sais pas c'est comment utilisé cette Notion d'interface pour résoudre ce problème d'héritage multiple.

SVP EXPLIQUEZ MOI SOUS FORME D'EXMPLE COMMENT FAIRE POUR QUE LA CALSSE 'C' HERITE DES DEUX CLASSES 'A' ET 'B'.

MERCI.
MedIUM

5 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
7 nov. 2008 à 21:34
Salut,

Il te suffit de faire 2 interfaces :

public interface A {
    Méthodes_A1();  // pas de code
    Méthodes_A2(); // pas de code
}


public interface B {

    Méthodes_B1();  // pas de code

    Méthodes_B2(); // pas de code

}

Deux classes abstraites :
public class AbstractA implements A {
    Attribut_A1;
    Attribut_A2;

    Méthodes_A1() { ... code ... }
    Méthodes_A2() { ... code ... }
}

public class AbstractB implements B {

    Attribut_B1;

    Attribut_B2;


    Méthodes_B1() { ... code ... }

    Méthodes_B2() { ... code ... }
}

et enfin une classe concrète :
public class C implements A, B {
    protected A a = new AbstractA();
    protected B b = new AbstractB();   

   Méthodes_A1() { a.Méthodes_A1(); }
   Méthodes_A2() { a.Méthodes_A2(); }

   Méthodes_B1() { b.Méthodes_B1(); }

   Méthodes_B2() { b.Méthodes_B2(); }
}

Et voilà comment faire de l'héritage multiple en Java tout en limitant la duplication de code.
______________________________________
DarK Sidious
3
miudem Messages postés 16 Date d'inscription dimanche 6 avril 2008 Statut Membre Dernière intervention 5 mai 2010
7 nov. 2008 à 21:43
Merci DARKSIDIOUS ..... C'est vraiment ce que je cherche.
0
zahenianis Messages postés 11 Date d'inscription dimanche 27 janvier 2008 Statut Membre Dernière intervention 28 janvier 2011
27 avril 2010 à 17:15
Malheureusement y a une erreur la dedans , on ne peut pas instancier une classe abstraite :

protected A a = new AbstractA();
protected B b = new AbstractB();

et par conséquent on n'a pas accès aux méthodes de ces classes abstraites sans faire de l'héritage, ( héritage multiple n'est pas permis en java ).


Bonne chance.
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
27 avril 2010 à 18:20
Salut,

Par définition, une classe abstraite est... abstraite : elle n'est pas concrète. Il n'y a donc pas d'intérêt à l'instancier.

Cependant, il est possible de faire une classe anonyme :

protected B b = new AbstractB() {
public void methodeAImplementer() {
// code de la méthode
}
}

C'est vraiment pas joli, mais ca reste possible (c'est le principe des Adapter pour les événements SWING).
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
soukaouta Messages postés 39 Date d'inscription vendredi 29 octobre 2010 Statut Membre Dernière intervention 16 novembre 2012
9 avril 2012 à 20:25
bonjour,
est il nécessaire de déclarer les classes abstractA et absractB comme classe abstraite,
je ne vois pas pourquoi on les a déclaré ainsi???????
s'il sont des classes normales on peut les instancié et on aura aucun problème par la suite.
Merci
0
Rejoignez-nous