Bird
Raised Fist0
Javaprogramming~5 mins

Multiple inheritance using interfaces in Java - Cheat Sheet & Quick Revision

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is multiple inheritance in Java?
Multiple inheritance means a class can inherit features from more than one parent class or interface. In Java, multiple inheritance is supported only through interfaces, not classes.
Click to reveal answer
beginner
How do interfaces enable multiple inheritance in Java?
A Java class can implement multiple interfaces. This allows the class to inherit abstract methods from many sources, achieving multiple inheritance without the problems of inheriting from multiple classes.
Click to reveal answer
beginner
Can a Java class extend multiple classes?
No, Java does not allow a class to extend more than one class to avoid complexity and ambiguity. Instead, Java uses interfaces to allow multiple inheritance.
Click to reveal answer
intermediate
What happens if two interfaces have methods with the same signature and a class implements both?
The class must provide its own implementation of the method. This resolves any ambiguity because the class decides how to implement the shared method.
Click to reveal answer
beginner
Example: How to declare a class that implements two interfaces named InterfaceA and InterfaceB?
public class MyClass implements InterfaceA, InterfaceB {
    // Implement all abstract methods from InterfaceA and InterfaceB here
}
Click to reveal answer
Which keyword is used in Java to inherit from multiple interfaces?
Ainherits
Bextends
Cimplements
Dinterface
Can a Java class extend two classes at the same time?
ANo, never
BOnly if classes are interfaces
COnly if classes are abstract
DYes, always
If two interfaces have the same method signature, what must the implementing class do?
AUse super keyword to call both
BIgnore one method
CImplement both methods separately
DImplement the method once
Which of these is a benefit of using interfaces for multiple inheritance?
AAvoids diamond problem
BAllows multiple constructors
CEnables private inheritance
DSupports multiple superclasses
How do you declare a class named 'Car' that implements interfaces 'Engine' and 'Wheels'?
Aclass Car extends Engine, Wheels {}
Bclass Car implements Engine, Wheels {}
Cclass Car inherits Engine, Wheels {}
Dclass Car interface Engine, Wheels {}
Explain how Java supports multiple inheritance using interfaces and why it does not allow multiple inheritance with classes.
Think about how interfaces differ from classes and why Java designers chose this approach.
You got /4 concepts.
    Describe what happens when a class implements two interfaces that have a method with the same name and signature.
    Consider how the class resolves method conflicts from interfaces.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main reason Java uses interfaces for multiple inheritance instead of classes?
      easy
      A. To avoid the diamond problem and allow safe multiple inheritance
      B. Because Java does not support inheritance at all
      C. To make code run faster
      D. To prevent any method overriding

      Solution

      1. Step 1: Understand Java inheritance limitations

        Java does not allow multiple inheritance with classes to avoid ambiguity known as the diamond problem.
      2. Step 2: Role of interfaces in multiple inheritance

        Interfaces allow multiple inheritance of type without implementation conflicts, enabling safe multiple inheritance.
      3. Final Answer:

        To avoid the diamond problem and allow safe multiple inheritance -> Option A
      4. Quick Check:

        Interfaces solve diamond problem = A [OK]
      Hint: Interfaces enable multiple inheritance safely in Java [OK]
      Common Mistakes:
      • Thinking Java supports multiple class inheritance
      • Believing interfaces improve speed
      • Confusing method overriding prevention
      2. Which of the following is the correct syntax for a class Car implementing two interfaces Engine and Wheels?
      easy
      A. public class Car implements Engine & Wheels {}
      B. public class Car extends Engine, Wheels {}
      C. public class Car implements Engine, Wheels {}
      D. public class Car extends Engine implements Wheels {}

      Solution

      1. Step 1: Recall Java syntax for implementing multiple interfaces

        Java uses the keyword implements followed by a comma-separated list of interfaces.
      2. Step 2: Check each option's syntax

        public class Car implements Engine, Wheels {} correctly uses implements Engine, Wheels. Options B and D incorrectly use extends for interfaces or mix keywords wrongly. public class Car implements Engine & Wheels {} uses an invalid '&' symbol.
      3. Final Answer:

        public class Car implements Engine, Wheels {} -> Option C
      4. Quick Check:

        Multiple interfaces use comma with implements = A [OK]
      Hint: Use 'implements' with commas for multiple interfaces [OK]
      Common Mistakes:
      • Using extends instead of implements for interfaces
      • Using '&' instead of commas
      • Mixing extends and implements incorrectly
      3. What will be the output of the following code?
      interface A {
          default void show() { System.out.println("A"); }
      }
      interface B {
          default void show() { System.out.println("B"); }
      }
      class C implements A, B {
          public void show() {
              A.super.show();
              B.super.show();
          }
      }
      public class Test {
          public static void main(String[] args) {
              C obj = new C();
              obj.show();
          }
      }
      medium
      A. B\nA
      B. A\nB
      C. Compilation error due to method conflict
      D. No output

      Solution

      1. Step 1: Understand default methods in interfaces

        Both interfaces A and B have a default method show(). Class C implements both and overrides show().
      2. Step 2: Analyze method calls inside C's show()

        C's show() calls A.super.show() then B.super.show(), so it prints "A" then "B" on separate lines.
      3. Final Answer:

        A B -> Option B
      4. Quick Check:

        Calling both interface methods prints A then B [OK]
      Hint: Use InterfaceName.super.method() to call specific default methods [OK]
      Common Mistakes:
      • Expecting compilation error without override
      • Confusing order of prints
      • Missing super calls causing ambiguity
      4. Identify the error in the following code snippet:
      interface X {
          void display();
      }
      interface Y {
          void display();
      }
      class Z implements X, Y {
          // No display() method implemented
      }
      medium
      A. Class Z must implement display() method or be declared abstract
      B. No error, code compiles fine
      C. Interfaces cannot have methods with same name
      D. Class Z should extend interfaces, not implement

      Solution

      1. Step 1: Check interface method requirements

        Interfaces X and Y both declare display() method without implementation.
      2. Step 2: Check class Z implementation

        Class Z implements both interfaces but does not provide display() method, so it must be abstract or implement the method.
      3. Final Answer:

        Class Z must implement display() method or be declared abstract -> Option A
      4. Quick Check:

        Implement all interface methods or declare abstract = D [OK]
      Hint: Implement all interface methods or declare class abstract [OK]
      Common Mistakes:
      • Assuming no implementation needed if methods have same name
      • Thinking interfaces cannot share method names
      • Using extends instead of implements for interfaces
      5. Given interfaces Readable and Writable with methods read() and write() respectively, how can you design a class FileHandler that implements both interfaces and provides default logging before each operation? Choose the best approach.
      hard
      A. Implement both interfaces in FileHandler and override methods to add logging then call interface methods
      B. Make FileHandler extend both interfaces and implement methods without logging
      C. Use abstract class instead of interfaces for multiple inheritance
      D. Implement interfaces and add logging inside overridden methods in FileHandler

      Solution

      1. Step 1: Understand interface implementation and method overriding

        FileHandler must implement both read() and write() methods from interfaces.
      2. Step 2: Add logging before operations

        Override methods in FileHandler to add logging code before performing the actual operation.
      3. Step 3: Choose best approach

        Implement interfaces and add logging inside overridden methods in FileHandler correctly describes implementing interfaces and adding logging inside overridden methods. Implement both interfaces in FileHandler and override methods to add logging then call interface methods incorrectly suggests calling interface methods which have no implementation. Make FileHandler extend both interfaces and implement methods without logging uses wrong keyword extend. Use abstract class instead of interfaces for multiple inheritance avoids interfaces and is not best for multiple inheritance.
      4. Final Answer:

        Implement interfaces and add logging inside overridden methods in FileHandler -> Option D
      5. Quick Check:

        Override interface methods to add behavior = C [OK]
      Hint: Override interface methods to add extra behavior like logging [OK]
      Common Mistakes:
      • Trying to extend interfaces instead of implement
      • Calling interface methods directly which have no body
      • Using abstract class when interfaces are better for multiple inheritance