Maison >Java >javaDidacticiel >Java autorise-t-il un véritable héritage multiple ?
Java et l'héritage multiple
Vous avez récemment rencontré une question d'entretien concernant la position de Java sur l'héritage multiple. Même si votre réponse était en grande partie correcte, approfondissons le sujet.
Le scénario que vous avez décrit, dans lequel la classe A étend la classe B et la classe B étend l'objet, ne constitue pas un héritage multiple. Au lieu de cela, il s'agit d'un exemple d'héritage à plusieurs niveaux, où chaque niveau descend du précédent.
L'héritage multiple implique qu'une classe hérite de deux ou plusieurs bases qui ne sont pas liées ou qui ont déjà divergé. En Java, puisque Object est toujours une base ultime, l'héritage multiple signifierait hériter de deux lignes différentes.
En interne, lorsque le compilateur résout un membre sur une instance, il recherche ce membre dans la hiérarchie des types de l'objet. Il vérifie d'abord si le type possède directement le membre, et sinon, il passe aux niveaux hérités.
Bien que Java interdise le véritable héritage multiple, il a évolué avec des interfaces qui prennent en charge les « méthodes par défaut » dans Java 8. Ces méthodes par défaut permettent aux classes « d'hériter » des fonctionnalités des interfaces, fournissant un niveau d'indirection qui ressemble à un héritage multiple.
Les méthodes par défaut offrent plusieurs avantages :
Bien que les méthodes par défaut de Java 8 fournissent une forme d'héritage multiple dans la pratique, elles ne résolvent pas les complexités inhérentes au véritable héritage multiple, telles que la sélection ambiguë de superclasse, l'ordre d'invocation du constructeur, et l'héritage de méthode en double.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!