/ / Java permettant l'héritage multiple - java, héritage

Java permettant l'héritage multiple - java, héritage

Je suis confus en ce qui concerne un concept en héritage multiple. J'ai trois classes A, B et C.

Class A {
// ...
}

Class B extends A {
// ...
}

Class C extends B {
// ...
}

Je sais que c'est une mauvaise pratique de plusieursl'héritage et je lis aussi que java permet l'héritage multiple à travers les interfaces. Mais je ne reçois aucune erreur dans le code ci-dessus. S'il vous plaît quelqu'un peut-il m'expliquer avec un exemple clair sans utiliser d'interface. Merci!!

Réponses:

2 pour la réponse № 1

Ce n'est pas un héritage multiple. Chaque classe a exactement une super classe directe. Si votre exemple était considéré comme un héritage multiple, vous ne pourriez pas utiliser le extends mot-clé du tout, puisque chaque classe étend déjà par défaut le Object classe.

Le multi-héritage serait

class C extends A,B {}

Et c’est illégal en Java.


2 pour la réponse № 2

Votre code ne contient pas d'héritage multiple et constitue en fait une syntaxe légale Java. L'héritage multiple fait référence à un cas où une classe directement étend deux superclasses. Par exemple:

public class MyClass extends MyFather, MyMother {
}

Notez qu'il s'agit bien sûr d'une syntaxe Java illégale.


2 pour la réponse № 3

"L'héritage multiple" en Java signifie essentiellement l'héritage de plusieurs interfaces, pas l'héritage de plusieurs implémentations.

Maintenant, il existe une nouvelle fonctionnalité de Java 8 qui vous permet de faire quelque chose comme l'héritage multiple d'implémentations réelles, via des interfaces et quelque chose appelé méthodes par défaut. Je vous encourage fortement à maîtriser les bases de Java avant de les essayer. Une fois que vous êtes prêt, voici un bon tutoriel sur les méthodes par défaut.


1 pour la réponse № 4

Le code que vous avez écrit ci-dessus est un exemple de multiniveau héritage Pas d'héritage multiple.

L'héritage multiple est comme:

class A extends B,C {

//this code is not valid in JAVA

}

Et si vous souhaitez utiliser des interfaces pour implémenter une structure telle que l'héritage multiple, vous pouvez utiliser:

interface test_interface1{
/*all the methods declared here in this interface should be the part
** of the class which is implementing this current interface
*/
}

De même :

interface test_interface2{

}

Donc, créez une classe TestClass comme:

class TestClass implements test_interface1,test_interface2 {

//now you have to use each and every method(s) declared in both the interfaces
// i.e. test_interface1 & test_interface2

}

Vous pouvez également utiliser une syntaxe telle que:

class TestClass extends AnyClass implements test_interface1,test_interface2 {
/* but do keep in mind - use extends keyword before implements
** and now you know you cannot use more than 1 class names with extends keyword
** in java.
*/