Types d'héritage en Java avec des exemples
Prérequis : L'héritage et son implémentation en Java
Type d'héritage en Java
En programmation Java, il existe les types d'héritage suivants ,
- Héritage unique
- Héritages multiples (via l'interface)
- Héritage à plusieurs niveaux
- Héritage hiérarchique
1) Héritage unique
Si une classe étend une autre classe (c'est-à-dire la seule classe).
Syntaxe :
class Parent { // Fields and Methods } class Child extends Parent { // Fields and Methods }
Exemple d'héritage unique :
/*Java program to demonstrate the concept of inheritance */ // Parent class class Parent { // The Parent class has one method // displayParentMessage() method to print message of Parent Class public void displayParentMessage() { System.out.println("Hello, we are in parent class method"); } } // Sub class or derived class class Child extends Parent { // The Child subclass adds one more method // displayChildMessage() method to print message of Parent Class public void displayChildMessage() { System.out.println("Hello, we are in child class method"); } } // Main class in this class we will create //object of parent and child class class Main { public static void main(String[] args) { // Creation of Parent class object Parent p = new Parent(); // Calling Parent class method by Parent class object p.displayParentMessage(); // Creation of Child class object Child c = new Child(); // Calling Child class method by Child class object c.displayChildMessage(); // Calling Parent class method by Child class object c.displayParentMessage(); } }
Sortie
D:\Programs>javac Main.java D:\Programs>java Main Hello, we are in parent class method Hello, we are in child class method Hello, we are in parent class method
2) Héritage multiple (via l'interface)
Si nous étendons plus d'une classe. Java ne prend pas directement en charge les héritages multiples, mais avec l'aide de l'interface, nous pouvons l'implémenter, mais c'est similaire à l'héritage multiple.
Syntaxe :
interface interface1 { // Field and Method declaration } interface interface2 { // Field and Method declaration } Class class_name implements interface1, interface2 {}
Exemple d'héritage multiple :
/*Java program to demonstrate the concept of multiple inheritance */ interface Print { void print(); } interface Show { void show(); } class Main implements Print, Show { public void print() { System.out.println("Hello"); } public void show() { System.out.println("World"); } public static void main(String args[]) { Main obj = new Main(); obj.print(); obj.show(); } }
Sortie
D:\Programs>javac Main.java D:\Programs>java Main Hello World
3) Héritage à plusieurs niveaux
Si une classeA s'étend par la classeB et que la classeB s'étend par la classeC, on parle d'héritage multiniveau.
Syntaxe :
class classA { // Fields and Methods } class classB extends classA { // Fields and Methods } class classC extends classB { // Fields and Methods }
Exemple d'héritage à plusieurs niveaux :
/*Java program to demonstrate the concept of multilevel inheritance */ // ClassA class class ClassA { // The ClassA class has one method // displayClassAMessage() method to print message of ClassA Class public void displayClassAMessage() { System.out.println("Hello, we are in ClassA class method"); } } // ClassB class class ClassB extends ClassA { // The ClassB class adds one more method // displayClassBMessage() method to print message of ClassB Class public void displayClassBMessage() { System.out.println("Hello, we are in ClassB class method"); } } // ClassC class class ClassC extends ClassB { // The ClassC class adds one more method // displayClassCMessage() method to print message of ClassC Class public void displayClassCMessage() { System.out.println("Hello, we are in ClassC class method"); } } // Main class in this class we will create //object of ClassA and ClassB and ClassC class class Main { public static void main(String[] args) { // Creation of ClassA class object ClassA ca = new ClassA(); // Calling ClassA class method by ClassA class object ca.displayClassAMessage(); // Creation of ClassB class object ClassB cb = new ClassB(); // Calling ClassB class method by ClassB class object cb.displayClassBMessage(); // Calling ClassA class method by ClassB class object cb.displayClassAMessage(); // Creation of ClassC class object ClassC cc = new ClassC(); // Calling ClassC class method by ClassC class object cc.displayClassCMessage(); // Calling ClassB class method by ClassC class object cc.displayClassBMessage(); // Calling ClassA class method by ClassC class object cc.displayClassAMessage(); } }
Sortie
D:\Programs>javac Main.java D:\Programs>java Main Hello, we are in ClassA class method Hello, we are in ClassB class method Hello, we are in ClassA class method Hello, we are in ClassC class method Hello, we are in ClassB class method Hello, we are in ClassA class method
4) Héritage hiérarchique
Si plusieurs classes sont héritées de la classe de base, on parle d'héritage hiérarchique.
Syntaxe :
class classA { // Fields and Methods } class classB extends classA { // Fields and Methods } class classC extends classA { // Fields and Methods }
Exemple d'héritage hiérarchique :
/*Java program to demonstrate the concept of hierarchical inheritance */ //ClassA class ClassA { // The ClassA class has one method // displayClassAMessage() method to print message of ClassA Class public void displayClassAMessage() { System.out.println("Hello, we are in ClassA class method"); } } // ClassB class class ClassB extends ClassA { // The ClassB class adds one more method // displayClassBMessage() method to print message of ClassB Class public void displayClassBMessage() { System.out.println("Hello, we are in ClassB class method"); } } // ClassC class class ClassC extends ClassA { // The ClassC class adds one more method // displayClassCMessage() method to print message of ClassC Class public void displayClassCMessage() { System.out.println("Hello, we are in ClassC class method"); } } // Main class in this class we will create //object of ClassA and ClassB and ClassC class class Main { public static void main(String[] args) { // Creation of ClassA class object ClassA ca = new ClassA(); // Calling ClassA class method by ClassA class object ca.displayClassAMessage(); // Creation of ClassB class object ClassB cb = new ClassB(); // Calling ClassB class method by ClassB class object cb.displayClassBMessage(); // Calling ClassA class method by ClassB class object cb.displayClassAMessage(); // Creation of ClassC class object ClassC cc = new ClassC(); // Calling ClassC class method by ClassC class object cc.displayClassCMessage(); // Calling ClassA class method by ClassC class object cc.displayClassAMessage(); } }
Sortie
D:\Programs>javac Main1.java D:\Programs>java Main1 Hello, we are in ClassA class method Hello, we are in ClassB class method Hello, we are in ClassA class method Hello, we are in ClassC class method Hello, we are in ClassA class method