Java multi héritage

Comment fait t on pour qu'une classe puisse hérité de deux autres classes ?

2 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    'lut, ce n'est pas possible: Java ne supporte pas l'héritage multiple (à l'instar du C++ par exemple).
    En revanche, il y a les Interfaces qui sont là pour combler une partie de ce manque.
    Et au passage, la politesse, c'est une chose a ne pas oublier. Pas bonjour, pas merci...
    from human import idiocy
    del idiocy
    1. Merci et excusez moi pour l'oubli
    2. Modérateur
      Bonjour,

      Pour compléter, depuis Java 8 les interfaces ont des méthodes par défaut, donc on peut enrichir l'héritage multiple d'interfaces en Java en implémentant plusieurs interfaces avec des méthodes par défaut, qui peuvent être potentiellement totalement implémentées.
      Evidemment, ce n'est pas magique, et si on implémente deux interfaces qui ont deux méthodes par défaut de même signature, alors elles s'annulent, il faudra donc implémenter la méthode en conflit (en utilisant éventuellement une combinaison des méthodes en conflits)

      NB. "à l'instar du C++" j'imagine que tu voulais dire "à l'encontre du C++"... car C++ supporte l'héritage multiple (avec bien sûr quelques contraintes pour les conflits).
    3. Contributeur
      @KX: oups, mon français m'échappe :-° ... Je voulais en effet dire "à l'encontre du C++".
  2. Bnjr Merci pour votre Réponse et j m'excuse pour l'oubli.

    Je travail sur l programme sur le programme suivant:

    public class Chanteur extends Personne{ 
    
     private String maisonEdition;
     private String titres [];
     private int nbTitres;
    
     public Chanteur(String prenom, String nom, int age) {
      super(prenom, nom, age,"Chanteur");
      this.titres= new String [10];   
      }
    
     public String sePresenter (){
      System.out.println ("Appel sePresenter Chanteur");
      return super.sePresenter() +" et je suis Chanteur";
      }
    
     public void setEdition (String maisonEdition){ 
      this.maisonEdition= maisonEdition;
      }
    
     public String getEdition(){ 
      if (maisonEdition!=null)
      return "Le nom de la maison d'édition de "+this.getNom()+" est "+this.maisonEdition;
      else
       return " ";
      }
    
     public void ajouterTitre(String titre){ 
      if (nbTitres<10)
       this.titres[nbTitres++]=titre;
      else
       System.out.println("Ce Chanteur à déja 10 titres");
      }
    
     public void afficherTitres (){
      int k;
      System.out.println("Le(s) titre(s) créé(s) par "+this.getNom()+" est(sont) : ");
      for (k=0;k<this.nbTitres;k++)
       System.out.println(titres[k]);
      }
     }

    Et maintenant on me demande de Créer une classe Disque (titre, date de création, nombre d'exemplaire vendu) pour changer le tableau titres, le rendre dynamique.

    Merci d'avance
    1. Modérateur
      Et quel rapport avec de l'héritage multiple ? La classe Disque hérite de Chanteur !!?
    2. C'est vrai que ma question est un peut ambigu. C'est Chanteur qui utilise Disque mais comme vous me l'avez signaler l'héritage multiple n'est pas possible sous Java. Donc je souhaiterai savoir par quel moyen pouvons nous faire cela ?
    3. Modérateur
      Je ne vois toujours pas le rapport, ce n'est pas de l'héritage et encore moins de l'héritage multiple...

      private Disque[] disques;
      
      public void ajouterDisque(Disque disque) {
         ...
    4. @KXOk Merci je vais essayer avec cela