Sunday, April 14, 2024

Java - multiple inheritance via Interfaces

 Java itself does not directly support multiple inheritance for classes due to potential ambiguity issues. This means a class cannot inherit directly from more than one parent class.

Here's why multiple inheritance can be problematic:

  • Diamond Problem: Imagine a scenario where two parent classes (A and B) both inherit from a common grandparent class (C). If a subclass (D) inherits from both A and B, it would have two copies of inherited members from C, leading to confusion about which version to use.

Alternatives to Achieve Similar Functionality:

  1. Interfaces:

    • Provide a way for classes to define a contract (method signatures) that other classes can implement.
    • A class can implement multiple interfaces, inheriting methods from each.
    • Promotes loose coupling and flexibility, allowing unrelated classes to share similar behavior.

    Example:

    interface Drawable {
        void draw();
    }
    
    interface Printable {
        void print();
    }
    
    class Document implements Drawable, Printable {
        @Override
        public void draw() {
            // Implement drawing logic
        }
    
        @Override
        public void print() {
            // Implement printing logic
        }
    }
    
  2. Abstract Classes:

    • Can be used to create a hierarchy of related classes.
    • Subclasses can inherit from a single abstract class and gain its functionality.
    • While not strictly multiple inheritance, it allows for code reuse and specialization.

Choosing the Right Approach:

  • If classes share a set of common behaviors, interfaces are a good choice for flexibility and loose coupling.
  • If classes need to inherit a common implementation base, abstract classes can provide a structure for subclasses.

By understanding the limitations of multiple inheritance in Java and exploring alternative solutions, you can effectively structure your object-oriented code for maintainability and reusability.

LeetCode C++ Cheat Sheet June

🎯 Core Patterns & Representative Questions 1. Arrays & Hashing Two Sum – hash map → O(n) Contains Duplicate , Product of A...