default methods and static methods in interface

In Java 8, interfaces were enhanced significantly with the introduction of default methods and static methods. Earlier, interfaces could only declare abstract methods (implicitly public abstract) and constants (implicitly public static final).


🔹 1. Default Methods in Interfaces

A default method is a method in an interface that has a body and uses the keyword default.

✅ Key Points:

  • Introduced to provide backward compatibility so old interfaces can evolve without breaking classes that implement them.
  • They are inherited by implementing classes if not overridden.
  • Can be overridden in the implementing class.

📌 Example:

interface MyInterface {
    void normalMethod();

    // Default method with implementation
    default void defaultMethod() {
        System.out.println("This is a default method in the interface.");
    }
}

class MyClass implements MyInterface {
    @Override
    public void normalMethod() {
        System.out.println("Implementing normal method.");
    }

    // Optional: Override default method
    @Override
    public void defaultMethod() {
        System.out.println("Overridden default method in class.");
    }
}

public class Main {
    public static void main(String[] args) {
        MyClass obj = new MyClass();
        obj.normalMethod();    // Implementing normal method.
        obj.defaultMethod();   // Overridden default method in class.
    }
}

🔹 2. Static Methods in Interfaces

A static method inside an interface is similar to a static method in a class.

✅ Key Points:

  • Belongs to the interface itself, not to the objects of implementing classes.
  • Cannot be overridden by implementing classes.
  • Must be called using the interface name.

📌 Example:

interface MyInterface {
    static void staticMethod() {
        System.out.println("This is a static method in the interface.");
    }
}

public class Main {
    public static void main(String[] args) {
        // Calling static method using interface name
        MyInterface.staticMethod();
    }
}

🔹 Difference Between Default and Static Methods

FeatureDefault MethodStatic Method
Belongs toInstance of implementing classInterface itself
InheritanceInherited by implementing classesNot inherited
OverrideCan be overriddenCannot be overridden
Call syntaxobj.methodName()InterfaceName.methodName()

Leave a Reply