Bird
Raised Fist0
Javaprogramming~10 mins

Implementing interfaces in Java - Step-by-Step Execution

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
Concept Flow - Implementing interfaces
Define Interface
Create Class
Use 'implements' keyword
Override Interface Methods
Create Object of Class
Call Overridden Methods
Program Runs
This flow shows how a class uses an interface by implementing its methods and then running the program.
Execution Sample
Java
interface Animal {
    void sound();
}

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

public class Main {
    public static void main(String[] args) {
        Animal myDog = new Dog();
        myDog.sound();
    }
}
This code defines an interface Animal with a method sound, then a Dog class implements it and prints 'Woof'.
Execution Table
StepActionEvaluationResult
1Define interface Animal with method sound()Interface createdAnimal interface ready
2Define class Dog implementing AnimalDog must override sound()Dog class ready with sound() method
3Create Dog object assigned to Animal referenceObject createdmyDog points to Dog instance
4Call myDog.sound()Dog's sound() runsPrints 'Woof'
5Program endsNo more instructionsExecution stops
💡 Program ends after printing 'Woof' from Dog's sound() method
Variable Tracker
VariableStartAfter Step 3After Step 4Final
myDognullDog instanceDog instanceDog instance
Key Moments - 3 Insights
Why do we use 'implements' keyword in the Dog class?
Because Dog promises to provide code for all methods declared in the Animal interface, as shown in step 2 of the execution_table.
What happens if Dog does not override the sound() method?
The code will not compile because the interface requires sound() to be implemented, as explained in step 2.
Why can we assign a Dog object to an Animal variable?
Because Dog implements Animal, so a Dog is an Animal type, shown in step 3 where myDog is Animal type but holds Dog instance.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is printed when myDog.sound() is called at step 4?
A"Meow"
B"Woof"
CNothing is printed
DCompilation error
💡 Hint
Check step 4 in execution_table where Dog's sound() prints 'Woof'
At which step does the Dog class promise to provide the sound() method implementation?
AStep 3
BStep 1
CStep 2
DStep 4
💡 Hint
Step 2 shows Dog implements Animal and must override sound()
If we remove 'implements Animal' from Dog, what happens?
ADog class cannot be assigned to Animal variable
BDog class must override sound() anyway
CDog still compiles and runs
DProgram prints 'Woof' twice
💡 Hint
Refer to variable_tracker and step 3 in execution_table about type assignment
Concept Snapshot
interface InterfaceName {
    void methodName();
}

class ClassName implements InterfaceName {
    public void methodName() {
        // method body
    }
}

- Use 'implements' to promise methods
- Must override all interface methods
- Can assign object to interface type variable
Full Transcript
This example shows how to implement interfaces in Java. First, we define an interface Animal with a method sound(). Then, the Dog class uses 'implements Animal' to promise it will provide the sound() method. Dog overrides sound() to print 'Woof'. In main, we create a Dog object but assign it to an Animal variable. When we call sound() on this variable, Dog's version runs and prints 'Woof'. The program ends after this. Key points: 'implements' means the class must provide all interface methods. You can use an interface type variable to hold any object of classes that implement it.

Practice

(1/5)
1. What keyword does a Java class use to follow an interface?
easy
A. uses
B. extends
C. inherits
D. implements

Solution

  1. 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.
  2. Step 2: Identify the correct keyword

    The keyword to make a class follow an interface is implements, not extends which is for classes inheriting other classes.
  3. Final Answer:

    implements -> Option D
  4. Quick Check:

    Class follows interface = implements [OK]
Hint: Remember: classes use implements for interfaces, extends for classes [OK]
Common Mistakes:
  • Using extends instead of implements for interfaces
  • Confusing inherits keyword which doesn't exist in Java
  • Using uses keyword which is invalid
2. Which of the following is the correct syntax to declare a class Car that implements interface Vehicle?
easy
A. class Car extends Vehicle {}
B. class Car implements Vehicle {}
C. interface Car implements Vehicle {}
D. class Car uses Vehicle {}

Solution

  1. Step 1: Identify class and interface keywords

    A class is declared with class, and interfaces with interface. Here, Car is a class, Vehicle is an interface.
  2. Step 2: Use correct syntax for implementing interface

    The class Car must use implements keyword to follow Vehicle interface. So class Car implements Vehicle {} is correct.
  3. Final Answer:

    class Car implements Vehicle {} -> Option B
  4. Quick Check:

    Class + implements + Interface = correct syntax [OK]
Hint: Class implements interface with 'implements' keyword [OK]
Common Mistakes:
  • Using extends instead of implements for interfaces
  • Declaring class as interface
  • Using invalid keyword uses
3. What will be the output of this code?
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();
    }
}
medium
A. Printing document
B. Compilation error: print() not implemented
C. Runtime error
D. No output

Solution

  1. 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.
  2. 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".
  3. Final Answer:

    Printing document -> Option A
  4. Quick Check:

    Implemented method runs and prints output [OK]
Hint: Implemented interface methods run normally when called [OK]
Common Mistakes:
  • Forgetting to make print() public causes compile error
  • Assuming interface methods run automatically without implementation
  • Confusing runtime error with compile error
4. Identify the error in this code:
interface Animal {
    void sound();
}

class Dog implements Animal {
    void sound() {
        System.out.println("Bark");
    }
}
medium
A. No error, code is correct
B. Dog should extend Animal, not implement
C. Method sound() must be public in Dog class
D. Interface Animal cannot have methods

Solution

  1. Step 1: Check method visibility in interface implementation

    Interface methods are implicitly public. When implementing, the method must be declared public in the class.
  2. Step 2: Identify method declaration in Dog class

    Dog's sound() method has default (package-private) visibility, missing public keyword, causing compile error.
  3. Final Answer:

    Method sound() must be public in Dog class -> Option C
  4. Quick Check:

    Interface methods require public implementation [OK]
Hint: Interface methods must be public in implementing class [OK]
Common Mistakes:
  • Omitting public keyword on implemented methods
  • Using extends instead of implements for interfaces
  • Thinking interface methods can be private
5. Given interface 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?
hard
A. class Calc implements Calculator { public int add(int a, int b) { return a + b; } public int subtract(int a, int b) { return a - b; } }
B. class Calc implements Calculator { int add(int a, int b) { return a + b; } int subtract(int a, int b) { return a - b; } }
C. class Calc extends Calculator { public int add(int a, int b) { return a + b; } public int subtract(int a, int b) { return a - b; } }
D. 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); } }

Solution

  1. 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.
  2. 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.
  3. 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 A
  4. Quick Check:

    Match method signatures exactly with public and return type [OK]
Hint: Implemented methods must match interface signatures exactly [OK]
Common Mistakes:
  • Omitting public keyword on methods
  • Using extends instead of implements for interfaces
  • Changing return types or parameters