DEV Community

Ravi Yasas
Ravi Yasas

Posted on

1 2

Default methods in Java 8

The problem

interface Automobile{
    void engineStart();
    void engineStop();
}

class Car implements Automobile{
    public void engineStart() { }
    public void engineStop() { }
}

class Bus implements Automobile{
    public void engineStart() { }
    public void engineStop() { }
}
Enter fullscreen mode Exit fullscreen mode
  • Just think we need to add another method in the interface in the future.
  • But if we add it, we have to change all other classes which are implemented that interface.

Default methods

  • To overcome this, default methods are introduced in Java 1.8
  • The interface segregation principle can be replaced with default methods in Java.
  • This is the best option to change the existing interfaces without changing implemented classes.
  • Until Java 1.7 every method inside an interface is always public and abstract.
  • In 1.8 version default and static methods are also allowed.
  • In 1.9 version private methods are also allowed.
  • Default methods can be overridden in implementing class.
  • Default methods cannot be overridden object class's methods.

The solution using Java 8 default methods

interface Automobile{
    default void m1(){}
}

interface Car{
    default void m1(){}
}

class Mazda3 implements Automobile, Car{
    public void m1() { }
}
Enter fullscreen mode Exit fullscreen mode
  • In such cases you have to override the default method.
  • Otherwise Mazda3 class won't be able to find which m1( ) method needs to be called.

Or else you can use it like this also using the "super" keyword.

interface Automobile{
    default void m1(){}
}

interface Car{
    default void m1(){}
}

class Mazda3 implements Automobile, Car{
    public void m1() {
        Automobile.super.m1();    
    }
}
Enter fullscreen mode Exit fullscreen mode

Speedy emails, satisfied customers

Postmark Image

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay