Java的接口

Java一开始就有接口,但到Java8才引入了接口的默认方法。


在Java 8之前,接口只能定义抽象方法和常量。实现接口的类必须实现接口中定义的所有抽象方法。如果在接口中添加新的方法,那么所有实现该接口的类都必须修改代码以实现新的方法。

Java 8引入了接口的默认方法和静态方法,使得接口的定义更加灵活和易于使用。通过默认方法,接口可以提供一些默认的实现,而不需要强制实现这些方法。这种改进使得接口在Java中的应用更加广泛,也为Java 8中的函数式编程提供了更好的支持。


有下面这样一个叫MyInterface的接口,里面有个默认方法myDefaultMethod

interface MyInterface {
  default void myDefaultMethod() {
    System.out.println("This is a default method in MyInterface.");
  }
}

class MyClass implements MyInterface {
  // no need to implement myDefaultMethod() in MyClass
}

public class Main {
  public static void main(String[] args) {
    MyClass obj = new MyClass();
    obj.myDefaultMethod(); // output: This is a default method in MyInterface.
  }
}

继承MyInterface接口的类就不需要去实现接口中的默认方法了。在主程序中也可以直接使用默认方法。

当然,实现类也可以对默认方法进行重写。

默认方法的主要目的是为了使现有的接口能够被修改而不破坏现有的实现。


接口中的静态方法。

接口中的静态方法是指在接口中声明的带有static关键字的方法,这些方法可以通过接口名称直接调用,而无需实例化接口的实现类。

静态方法可以直接通过接口名称调用,而默认方法则必须通过实现类的实例调用。静态方法通常用于提供实用工具或服务,而默认方法用于为现有的接口提供新的功能或行为。