Héritage multiple en JAVA [Résolu]

Signaler
Messages postés
16
Date d'inscription
dimanche 6 avril 2008
Statut
Membre
Dernière intervention
5 mai 2010
-
Messages postés
47
Date d'inscription
vendredi 29 octobre 2010
Statut
Membre
Dernière intervention
16 novembre 2012
-
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

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
100
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
Messages postés
16
Date d'inscription
dimanche 6 avril 2008
Statut
Membre
Dernière intervention
5 mai 2010

Merci DARKSIDIOUS ..... C'est vraiment ce que je cherche.
Messages postés
11
Date d'inscription
dimanche 27 janvier 2008
Statut
Membre
Dernière intervention
28 janvier 2011

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.
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
100
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
Messages postés
47
Date d'inscription
vendredi 29 octobre 2010
Statut
Membre
Dernière intervention
16 novembre 2012

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