MST

星途 面试题库

面试题:Java中接口默认方法与静态方法的区别

请详细阐述Java接口中默认方法与静态方法在定义、调用方式、使用场景等方面有哪些区别?
24.8万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试

定义

  • 默认方法:在接口中使用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接口中的一些静态方法用于创建特定类型的集合。
    • 辅助方法:用于辅助接口相关的操作,不依赖于任何实现类的状态,仅与接口本身的功能相关。