- Héritage
- Types d'héritage
- Pourquoi l'héritage multiple n'est-il pas possible en Java en cas de classe ?
Héritage en Java est un mécanisme dans lequel un objet acquiert toutes les propriétés et comportements d'un objet parent. C'est une partie importante de Oops (Système de programmation orienté objet).
L'idée derrière l'héritage en Java est que vous pouvez créer de nouveaux Des classes qui sont construits sur des classes existantes. Lorsque vous héritez d'une classe existante, vous pouvez réutiliser les méthodes et les champs de la classe parent. De plus, vous pouvez également ajouter de nouvelles méthodes et champs dans votre classe actuelle.
films
L'héritage représente le Relation IS-A qui est également connu sous le nom de parent-enfant relation.
Pourquoi utiliser l'héritage en Java
- Pour Remplacement de méthode (donc polymorphisme d'exécution peut être atteint).
- Pour la réutilisabilité du code.
Termes utilisés en matière de succession
La syntaxe de l'héritage Java
class Subclass-name extends Superclass-name { //methods and fields }
Le étend le mot clé indique que vous créez une nouvelle classe dérivée d’une classe existante. La signification de « étend » est d’augmenter la fonctionnalité.
Dans la terminologie Java, une classe héritée est appelée parent ou superclasse, et la nouvelle classe est appelée enfant ou sous-classe.
Exemple d'héritage Java
Comme le montre la figure ci-dessus, Programmer est la sous-classe et Employee est la superclasse. La relation entre les deux classes est Programmeur IS-A Employé . Cela signifie que le programmeur est un type d'employé.
class Employee{ float salary=40000; } class Programmer extends Employee{ int bonus=10000; public static void main(String args[]){ Programmer p=new Programmer(); System.out.println('Programmer salary is:'+p.salary); System.out.println('Bonus of Programmer is:'+p.bonus); } }Testez-le maintenant
Programmer salary is:40000.0 Bonus of programmer is:10000
Dans l'exemple ci-dessus, l'objet Programmer peut accéder au champ de sa propre classe ainsi qu'à celui de la classe Employee, c'est-à-dire la réutilisabilité du code.
Types d'héritage en Java
Sur la base de la classe, il peut y avoir trois types d'héritage en Java : simple, multiniveau et hiérarchique.
Dans la programmation Java, l'héritage multiple et hybride est pris en charge uniquement via l'interface. Nous découvrirons les interfaces plus tard.
Remarque : L'héritage multiple n'est pas pris en charge en Java via la classe.
Lorsqu’une classe hérite de plusieurs classes, on parle d’héritage multiple. Par exemple:
Exemple d'héritage unique
Lorsqu’une classe hérite d’une autre classe, on parle de héritage unique . Dans l'exemple donné ci-dessous, la classe Dog hérite de la classe Animal, il y a donc l'héritage unique.
Fichier : TestInheritance.java
class Animal{ void eat(){System.out.println('eating...');} } class Dog extends Animal{ void bark(){System.out.println('barking...');} } class TestInheritance{ public static void main(String args[]){ Dog d=new Dog(); d.bark(); d.eat(); }}
Sortir:
barking... eating...
Exemple d'héritage multiniveau
Lorsqu’il y a une chaîne d’héritage, on parle de héritage multiniveau . Comme vous pouvez le voir dans l'exemple ci-dessous, la classe BabyDog hérite de la classe Dog qui hérite à nouveau de la classe Animal, il existe donc un héritage à plusieurs niveaux.
Fichier : TestInheritance2.java
class Animal{ void eat(){System.out.println('eating...');} } class Dog extends Animal{ void bark(){System.out.println('barking...');} } class BabyDog extends Dog{ void weep(){System.out.println('weeping...');} } class TestInheritance2{ public static void main(String args[]){ BabyDog d=new BabyDog(); d.weep(); d.bark(); d.eat(); }}
Sortir:
weeping... barking... eating...
Exemple d'héritage hiérarchique
Lorsque deux classes ou plus héritent d’une seule classe, on parle de héritage hiérarchique . Dans l'exemple donné ci-dessous, les classes Dog et Cat héritent de la classe Animal, il existe donc un héritage hiérarchique.
Fichier : TestInheritance3.java
class Animal{ void eat(){System.out.println('eating...');} } class Dog extends Animal{ void bark(){System.out.println('barking...');} } class Cat extends Animal{ void meow(){System.out.println('meowing...');} } class TestInheritance3{ public static void main(String args[]){ Cat c=new Cat(); c.meow(); c.eat(); //c.bark();//C.T.Error }}
Sortir:
meowing... eating...
Q) Pourquoi l'héritage multiple n'est-il pas pris en charge en Java ?
Pour réduire la complexité et simplifier le langage, l'héritage multiple n'est pas pris en charge en Java.
Considérons un scénario dans lequel A, B et C sont trois classes. La classe C hérite des classes A et B. Si les classes A et B ont la même méthode et que vous l’appelez à partir d’un objet de classe enfant, il y aura une ambiguïté pour appeler la méthode de la classe A ou B.
Étant donné que les erreurs de compilation sont meilleures que les erreurs d’exécution, Java affiche une erreur de compilation si vous héritez de 2 classes. Donc, que vous ayez la même méthode ou une méthode différente, il y aura une erreur de compilation.
doubler en java
class A{ void msg(){System.out.println('Hello');} } class B{ void msg(){System.out.println('Welcome');} } class C extends A,B{//suppose if it were public static void main(String args[]){ C obj=new C(); obj.msg();//Now which msg() method would be invoked? } }Testez-le maintenant
Compile Time Error