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 a default method in Java interfaces?
A default method is a method defined in an interface with a body. It allows interfaces to have method implementations without breaking existing classes that implement the interface.
Click to reveal answer
beginner
How do you declare a default method in a Java interface?
Use the default keyword before the method name in the interface. For example:
They were introduced to allow adding new methods to interfaces without breaking existing implementations. This helps evolve interfaces over time.
Click to reveal answer
beginner
Can a class override a default method from an interface?
Yes, a class that implements the interface can provide its own implementation of the default method, overriding the interface's version.
Click to reveal answer
intermediate
What happens if two interfaces provide default methods with the same signature and a class implements both?
The class must override the conflicting default method to resolve the ambiguity, otherwise the code will not compile.
Click to reveal answer
Which keyword is used to declare a default method in a Java interface?
Astatic
Babstract
Cfinal
Ddefault
✗ Incorrect
The default keyword is used to declare a method with a body inside an interface.
What is the main benefit of default methods in interfaces?
AAllow interfaces to have method implementations without breaking existing classes
BMake all interface methods static
CForce all implementing classes to override methods
DPrevent interfaces from having any methods
✗ Incorrect
Default methods let interfaces add new methods with implementations without breaking existing code.
If a class implements two interfaces with the same default method signature, what must it do?
AOverride the method to resolve the conflict
BUse the method from the first interface only
CUse the method from the second interface only
DNothing, it compiles fine without changes
✗ Incorrect
The class must override the conflicting default method to avoid ambiguity.
Can default methods call other methods inside the interface?
AOnly static methods can be called
BNo, default methods cannot call any methods
CYes, they can call other interface methods
DOnly methods from Object class can be called
✗ Incorrect
Default methods can call other methods declared in the interface.
Which Java version introduced default methods?
AJava 7
BJava 8
CJava 6
DJava 9
✗ Incorrect
Default methods were introduced in Java 8 to enhance interfaces.
Explain what default methods are and why they are useful in Java interfaces.
Think about how interfaces evolved to add new features without breaking old code.
You got /4 concepts.
Describe how Java handles conflicts when a class implements two interfaces with the same default method.
Consider what happens when two parents give the same instruction.
You got /4 concepts.
Practice
(1/5)
1. What is the main purpose of default methods in Java interfaces?
easy
A. To enable multiple inheritance of classes
B. To declare abstract methods that must be implemented by classes
C. To create private helper methods inside interfaces
D. To allow interfaces to have method bodies without breaking existing implementations
Solution
Step 1: Understand interface method rules before Java 8
Interfaces could only declare abstract methods without bodies, forcing all implementing classes to define them.
Step 2: Role of default methods
Default methods allow interfaces to provide method bodies, so new methods can be added without breaking existing classes.
Final Answer:
To allow interfaces to have method bodies without breaking existing implementations -> Option D
Quick Check:
Default methods add bodies to interfaces safely [OK]
Hint: Default methods add code to interfaces without breaking old classes [OK]
Common Mistakes:
Confusing default methods with abstract methods
Thinking default methods enable multiple inheritance of classes
Believing default methods are private helper methods
2. Which of the following is the correct syntax to declare a default method in a Java interface?
easy
A. default void show() { System.out.println("Hello"); }
B. void default show() { System.out.println("Hello"); }
C. void show() default { System.out.println("Hello"); }
D. default show() void { System.out.println("Hello"); }
Solution
Step 1: Recall default method syntax
Default methods start with the keyword default, followed by the return type, method name, and body.
Step 2: Check each option
default void show() { System.out.println("Hello"); } matches the correct syntax: default void show() { ... }. Others have incorrect order or keywords.
Final Answer:
default void show() { System.out.println("Hello"); } -> Option A
Quick Check:
default + return type + method name + body = correct syntax [OK]
Hint: default keyword comes before return type in interface methods [OK]
Common Mistakes:
Placing default keyword after return type
Using default as a method modifier incorrectly
Omitting method body for default methods
3. What will be the output of the following code?
interface A {
default void greet() {
System.out.println("Hello from A");
}
}
class B implements A {
public void greet() {
System.out.println("Hello from B");
}
}
public class Test {
public static void main(String[] args) {
A obj = new B();
obj.greet();
}
}
medium
A. Hello from B
B. Hello from A
C. Compilation error
D. Runtime error
Solution
Step 1: Understand method overriding with default methods
Class B overrides the default greet() method from interface A with its own implementation.
Step 2: Determine which greet() is called
At runtime, the overridden method in class B is called, printing "Hello from B".
Final Answer:
Hello from B -> Option A
Quick Check:
Overridden method in class wins [OK]
Hint: Class method overrides interface default method [OK]
Common Mistakes:
Assuming default method runs instead of overridden
Expecting compilation error due to default method
Confusing runtime and compile-time behavior
4. Identify the error in the following code snippet:
interface X {
default void display() {
System.out.println("X display");
}
}
interface Y {
default void display() {
System.out.println("Y display");
}
}
class Z implements X, Y {
public void display() {
// ???
}
}
What should be done inside class Z's display() method to fix the error?
medium
A. Remove one interface from implements list
B. Call X.super.display() or Y.super.display() to resolve ambiguity
C. Make display() method abstract in class Z
D. No changes needed; code compiles fine
Solution
Step 1: Understand diamond problem with default methods
Class Z implements two interfaces X and Y, both having default display() methods, causing ambiguity.
Step 2: Resolve ambiguity by overriding and calling specific interface method
Class Z must override display() and explicitly call one interface's default method using X.super.display() or Y.super.display().
Final Answer:
Call X.super.display() or Y.super.display() to resolve ambiguity -> Option B
Quick Check:
Explicit super call fixes default method conflict [OK]
Hint: Use InterfaceName.super.method() to fix default method conflicts [OK]
Common Mistakes:
Ignoring ambiguity and expecting code to compile
Trying to remove interfaces instead of overriding
Making method abstract in a concrete class
5. Given two interfaces with default methods, how can a class implement both and combine their behaviors in a single method?
interface Printer {
default void print() {
System.out.println("Printing document");
}
}
interface Scanner {
default void print() {
System.out.println("Scanning document");
}
}
class MultiFunctionDevice implements Printer, Scanner {
public void print() {
// Combine both behaviors here
}
}
Which code inside print() correctly combines both default methods?
To combine behaviors, the class must explicitly call each interface's default method using InterfaceName.super.method().
Step 2: Check each option
Printer.super.print(); Scanner.super.print(); correctly calls both default methods. print(); print(); causes infinite recursion. super.print(); is invalid syntax. Printer.print(); Scanner.print(); is invalid because interfaces cannot be called like classes.
Final Answer:
Printer.super.print(); Scanner.super.print(); -> Option C
Quick Check:
Use InterfaceName.super.method() to call multiple defaults [OK]
Hint: Call each interface default with InterfaceName.super.method() [OK]
Common Mistakes:
Calling method recursively causing stack overflow
Using super.print() without interface name
Trying to call interface methods like static methods