Hybrid inheritance is a combination of two or more types of inheritance. In Java, hybrid inheritance is achieved through interfaces because Java does not support multiple inheritance with classes due to the diamond problem. However, interfaces provide a way to implement multiple inheritance-like behavior.

Concepts of Hybrid Inheritance using Interfaces

  • Interface: Defines a contract with methods that must be implemented by the classes.
  • Implementation of Interfaces: A class can implement multiple interfaces, providing a way to achieve hybrid inheritance.

Example of Hybrid Inheritance

Consider an example where we have the following structure:

    • An interface A with a method methodA().
    • An interface B with a method methodB().
    • An interface C that extends both A and B, combining their functionalities.
    • A class D that implements interface C.

Here's how we can implement this in Java:

				
					// Define interface A
interface A {
    void methodA();
}

// Define interface B
interface B {
    void methodB();
}

// Define interface C that extends both A and B
interface C extends A, B {
    void methodC();
}

// Implementing class D that implements interface C
class D implements C {
    // Implementing methodA from interface A
    public void methodA() {
        System.out.println("Method A implementation in Class D");
    }

    // Implementing methodB from interface B
    public void methodB() {
        System.out.println("Method B implementation in Class D");
    }

    // Implementing methodC from interface C
    public void methodC() {
        System.out.println("Method C implementation in Class D");
    }
}

public class HybridInheritanceExample {
    public static void main(String[] args) {
        D obj = new D();
        obj.methodA(); // Output: Method A implementation in Class D
        obj.methodB(); // Output: Method B implementation in Class D
        obj.methodC(); // Output: Method C implementation in Class D
    }
}

				
			

Explanation

  • Interface A: Declares methodA().
  • Interface B: Declares methodB().
  • Interface C: Extends both A and B, hence it inherits methods methodA() and methodB(). Additionally, it declares its own method methodC().
  • Class D: Implements interface C. This means D must provide implementations for methodA(), methodB(), and methodC().

Output

When you run the HybridInheritanceExample class, the output will be:

				
					Method A implementation in Class D
Method B implementation in Class D
Method C implementation in Class D

				
			

Conclusion

This example demonstrates how Java uses interfaces to achieve hybrid inheritance. By implementing multiple interfaces, a class can inherit behavior from multiple sources, thus achieving the functionality similar to multiple inheritance while avoiding the complexities and issues associated with it.

Scroll to Top