Bird
Raised Fist0
Javaprogramming~20 mins

Why interfaces are used in Java - Challenge Your Understanding

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
Challenge - 5 Problems
πŸŽ–οΈ
Interface Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
Purpose of Interfaces in Java
Why do Java programmers use interfaces in their code?
ATo allow unrelated classes to implement the same set of methods, enabling polymorphism.
BTo store data persistently on disk.
CTo create objects directly without using classes.
DTo increase the speed of program execution by compiling to machine code.
Attempts:
2 left
πŸ’‘ Hint
Think about how different classes can share behavior without sharing a parent class.
❓ Predict Output
intermediate
2:00remaining
Output of Interface Implementation
What is the output of this Java code?
Java
interface Animal {
    void sound();
}

class Dog implements Animal {
    public void sound() {
        System.out.println("Bark");
    }
}

class Cat implements Animal {
    public void sound() {
        System.out.println("Meow");
    }
}

public class Test {
    public static void main(String[] args) {
        Animal a = new Dog();
        a.sound();
        a = new Cat();
        a.sound();
    }
}
A
Bark
Bark
B
Meow
Bark
CCompilation error due to missing method implementation
D
Bark
Meow
Attempts:
2 left
πŸ’‘ Hint
Look at which class instance is assigned to the interface variable before calling sound().
πŸ”§ Debug
advanced
2:00remaining
Why does this interface code cause a compilation error?
This code tries to implement an interface but causes a compilation error. What is the reason?
Java
interface Vehicle {
    void start();
    void stop();
}

class Car implements Vehicle {
    public void start() {
        System.out.println("Car started");
    }
    // Missing stop() method implementation
}

public class Test {
    public static void main(String[] args) {
        Vehicle v = new Car();
        v.start();
        v.stop();
    }
}
AInterfaces cannot be implemented by classes.
BThe class Car does not implement all methods declared in the Vehicle interface.
CThe main method is missing the throws declaration.
DThe interface Vehicle cannot have more than one method.
Attempts:
2 left
πŸ’‘ Hint
Check if Car has all methods that Vehicle requires.
πŸ“ Syntax
advanced
2:00remaining
Identify the Syntax Error in Interface Declaration
Which option contains a syntax error in the interface declaration?
A
interface Shape {
    double area() {}
}
B
interface Shape {
    double area();
}
C
interface Shape {
    double area();
    void draw();
}
D
interface Shape {
    void resize(int size);
}
Attempts:
2 left
πŸ’‘ Hint
Interfaces cannot have method bodies unless they are default or static methods.
πŸš€ Application
expert
3:00remaining
Using Interfaces for Multiple Inheritance
Given these interfaces and classes, what will be the output when running the main method?
Java
interface Printable {
    void print();
}

interface Showable {
    void show();
}

class Document implements Printable, Showable {
    public void print() {
        System.out.println("Printing document");
    }
    public void show() {
        System.out.println("Showing document");
    }
}

public class Test {
    public static void main(String[] args) {
        Document doc = new Document();
        doc.print();
        doc.show();
    }
}
A
Showing document
Printing document
BCompilation error due to multiple inheritance
C
Printing document
Showing document
DRuntime error due to method conflict
Attempts:
2 left
πŸ’‘ Hint
Interfaces allow a class to inherit from multiple sources without conflict if methods are implemented.

Practice

(1/5)
1. Why do Java programmers use interfaces?
interface defines methods but no implementation. What is the main reason to use them?
easy
A. To ensure different classes share common method names and can work together
B. To store data like variables and constants
C. To create objects directly from the interface
D. To replace classes completely

Solution

  1. Step 1: Understand what interfaces define

    Interfaces declare methods without code, so classes must implement those methods.
  2. Step 2: Recognize the purpose of interfaces

    They allow different classes to share method names, enabling them to work together flexibly.
  3. Final Answer:

    To ensure different classes share common method names and can work together -> Option A
  4. Quick Check:

    Interfaces share method names = A [OK]
Hint: Interfaces define method rules for classes to follow [OK]
Common Mistakes:
  • Thinking interfaces store data
  • Believing interfaces create objects
  • Confusing interfaces with classes
2. Which of the following is the correct way to declare an interface in Java?
easy
A. interface Vehicle { void move(); }
B. class Vehicle { void move(); }
C. interface Vehicle() { void move(); }
D. interface Vehicle { void move() {} }

Solution

  1. Step 1: Check interface declaration syntax

    Interfaces use the keyword interface followed by name and method signatures without bodies.
  2. Step 2: Identify correct method declaration

    Methods in interfaces have no body, so void move(); is correct.
  3. Final Answer:

    interface Vehicle { void move(); } -> Option A
  4. Quick Check:

    Interface syntax = A [OK]
Hint: Interface methods have no body, just signatures [OK]
Common Mistakes:
  • Adding parentheses after interface name
  • Defining method bodies inside interface
  • Using class keyword instead of interface
3. What will be the output of this Java code?
interface Animal { void sound(); }
class Dog implements Animal {
public void sound() { System.out.println("Bark"); }
}
public class Test {
public static void main(String[] args) {
Animal a = new Dog();
a.sound();
}
}
medium
A. Compilation error
B. sound
C. Bark
D. No output

Solution

  1. Step 1: Understand interface implementation

    Class Dog implements Animal and provides the sound() method printing "Bark".
  2. Step 2: Trace method call

    Variable a is Animal type but refers to Dog object, so a.sound() calls Dog's method printing "Bark".
  3. Final Answer:

    Bark -> Option C
  4. Quick Check:

    Interface method call runs Dog's method = C [OK]
Hint: Interface reference calls implemented method in class [OK]
Common Mistakes:
  • Expecting interface method to print 'sound'
  • Thinking code won't compile without method body in interface
  • Confusing output with method name
4. Find the error in this code snippet:
interface Shape {
void draw();
}
class Circle implements Shape {
void draw() { System.out.println("Circle drawn"); }
}
medium
A. Interface cannot have methods
B. No error, code is correct
C. Circle class should be abstract
D. Method draw() must be public in Circle class

Solution

  1. Step 1: Check method visibility rules

    Interface methods are implicitly public, so implementing methods must be public too.
  2. Step 2: Identify method visibility in Circle

    Method draw() in Circle has default (package-private) visibility, missing public.
  3. Final Answer:

    Method draw() must be public in Circle class -> Option D
  4. Quick Check:

    Interface methods require public implementation = B [OK]
Hint: Implement interface methods as public always [OK]
Common Mistakes:
  • Ignoring method visibility mismatch
  • Thinking interface methods can be private
  • Assuming no error if method is package-private
5. You want to design a system where multiple unrelated classes like Printer, Scanner, and Camera can all be "Connectable" to a computer. Which approach best uses interfaces to achieve this?
hard
A. Use abstract classes for Printer, Scanner, and Camera instead of interfaces
B. Create a Connectable interface with a connect() method, and have each class implement it
C. Add connect() method directly in each class without interface
D. Make Printer, Scanner, and Camera extend a common class Connectable

Solution

  1. Step 1: Identify the need for shared behavior

    All classes need a common method connect() to work with the computer.
  2. Step 2: Use interface for unrelated classes

    Interfaces allow unrelated classes to share method names without forcing inheritance.
  3. Step 3: Evaluate options

    Create a Connectable interface with a connect() method, and have each class implement it uses interface to define connect(), letting each class implement it as needed.
  4. Final Answer:

    Create a Connectable interface with a connect() method, and have each class implement it -> Option B
  5. Quick Check:

    Interfaces enable shared methods for unrelated classes = D [OK]
Hint: Use interfaces to share methods across unrelated classes [OK]
Common Mistakes:
  • Trying to use class inheritance for unrelated classes
  • Duplicating methods without interface
  • Confusing abstract classes with interfaces