定义
- 默认方法:在接口中使用
default
关键字修饰的实例方法,有方法体。例如:
public interface MyInterface {
default void defaultMethod() {
System.out.println("This is a default method");
}
}
- 静态方法:在接口中使用
static
关键字修饰的方法,同样有方法体。例如:
public interface MyInterface {
static void staticMethod() {
System.out.println("This is a static method");
}
}
调用方式
class MyClass implements MyInterface {
// 无需重写默认方法也可调用
}
MyClass myObject = new MyClass();
myObject.defaultMethod();
- 静态方法:直接通过接口名调用,无需实现类或实例。例如:
MyInterface.staticMethod();
使用场景
- 默认方法:
- 接口演进:当需要给已有的接口添加新方法,又不想破坏已实现该接口的类时,可使用默认方法。这样已有的实现类无需修改代码,就自动拥有了新方法的默认实现。
- 行为共享:多个实现类可能有一些通用的行为逻辑,将这些逻辑提取到接口的默认方法中,减少代码重复。
- 静态方法:
- 工具方法:提供与接口相关的通用工具方法。这些方法通常与接口的功能紧密相关,但不需要依赖于具体的实例。例如,集合框架的
Collection
接口中的一些静态方法用于创建特定类型的集合。
- 辅助方法:用于辅助接口相关的操作,不依赖于任何实现类的状态,仅与接口本身的功能相关。