What if you could make different devices work together perfectly with just one simple promise?
Why Implementing interfaces in Java? - Purpose & Use Cases
Start learning this pattern below
Jump into concepts and practice - no test required
Imagine you are building a program where different types of devices need to perform similar actions, like turning on or off. Without interfaces, you might write separate code for each device, repeating the same method names and logic over and over.
This manual approach is slow and error-prone because you have to remember to write the same methods in every class. If you forget or make a mistake, your program can break or behave inconsistently. It also becomes hard to manage and update.
Interfaces let you define a set of actions that any class can promise to perform. By implementing an interface, each device class agrees to provide those actions. This keeps your code organized, consistent, and easy to update.
class Light { void turnOn() { /* code */ } void turnOff() { /* code */ } } class Fan { void turnOn() { /* code */ } void turnOff() { /* code */ } }
interface Switchable {
void turnOn();
void turnOff();
}
class Light implements Switchable {
public void turnOn() { /* code */ }
public void turnOff() { /* code */ }
}
class Fan implements Switchable {
public void turnOn() { /* code */ }
public void turnOff() { /* code */ }
}Interfaces enable you to write flexible and reusable code where different objects can be treated the same way based on shared actions.
Think of a remote control that works with many devices like TVs, stereos, and air conditioners. Each device implements the same interface so the remote can turn them on or off without knowing the details.
Interfaces define common actions without code repetition.
Implementing interfaces ensures consistent behavior across classes.
They make your code easier to manage and extend.
Practice
Solution
Step 1: Understand Java class and interface relationship
In Java, a class follows an interface by using a specific keyword to promise it will provide all methods declared in the interface.Step 2: Identify the correct keyword
The keyword to make a class follow an interface isimplements, notextendswhich is for classes inheriting other classes.Final Answer:
implements -> Option DQuick Check:
Class follows interface = implements [OK]
- Using extends instead of implements for interfaces
- Confusing inherits keyword which doesn't exist in Java
- Using uses keyword which is invalid
Car that implements interface Vehicle?Solution
Step 1: Identify class and interface keywords
A class is declared withclass, and interfaces withinterface. Here, Car is a class, Vehicle is an interface.Step 2: Use correct syntax for implementing interface
The class Car must useimplementskeyword to follow Vehicle interface. Soclass Car implements Vehicle {}is correct.Final Answer:
class Car implements Vehicle {} -> Option BQuick Check:
Class + implements + Interface = correct syntax [OK]
- Using extends instead of implements for interfaces
- Declaring class as interface
- Using invalid keyword uses
interface Printer {
void print();
}
class Document implements Printer {
public void print() {
System.out.println("Printing document");
}
}
public class Main {
public static void main(String[] args) {
Printer p = new Document();
p.print();
}
}Solution
Step 1: Check if interface method is implemented
The interface Printer declares method print(). The class Document implements Printer and provides public void print() method, so no error.Step 2: Trace main method execution
Main creates Printer reference p to new Document object and calls p.print(). This calls Document's print() which prints "Printing document".Final Answer:
Printing document -> Option AQuick Check:
Implemented method runs and prints output [OK]
- Forgetting to make print() public causes compile error
- Assuming interface methods run automatically without implementation
- Confusing runtime error with compile error
interface Animal {
void sound();
}
class Dog implements Animal {
void sound() {
System.out.println("Bark");
}
}Solution
Step 1: Check method visibility in interface implementation
Interface methods are implicitly public. When implementing, the method must be declared public in the class.Step 2: Identify method declaration in Dog class
Dog's sound() method has default (package-private) visibility, missing public keyword, causing compile error.Final Answer:
Method sound() must be public in Dog class -> Option CQuick Check:
Interface methods require public implementation [OK]
- Omitting public keyword on implemented methods
- Using extends instead of implements for interfaces
- Thinking interface methods can be private
Calculator with methods add(int a, int b) and subtract(int a, int b), which class correctly implements it to return the sum and difference respectively?Solution
Step 1: Check method signatures and visibility
Interface methods are public and return int. So implementing methods must be public and return int with same parameters.Step 2: Analyze each option
class Calc implements Calculator { public int add(int a, int b) { return a + b; } public int subtract(int a, int b) { return a - b; } } matches signatures exactly with public int return type. class Calc implements Calculator { int add(int a, int b) { return a + b; } int subtract(int a, int b) { return a - b; } } misses public keyword. class Calc extends Calculator { public int add(int a, int b) { return a + b; } public int subtract(int a, int b) { return a - b; } } uses extends which is invalid for interfaces. class Calc implements Calculator { public void add(int a, int b) { System.out.println(a + b); } public void subtract(int a, int b) { System.out.println(a - b); } } changes return type to void, which is incorrect.Final Answer:
class Calc implements Calculator { public int add(int a, int b) { return a + b; } public int subtract(int a, int b) { return a - b; } } -> Option AQuick Check:
Match method signatures exactly with public and return type [OK]
- Omitting public keyword on methods
- Using extends instead of implements for interfaces
- Changing return types or parameters
