Java 8 引入了两个重要的新特性到接口中:默认方法(Default Methods)和静态方法(Static Methods)。这些特性增强了Java接口的功能性,同时向后兼容旧版本的Java代码。
默认方法(Default Methods)
默认方法允许在接口中包含具有实现体的方法,而不是像以前版本的Java那样,接口中只能声明方法而不能实现。这个特性主要是为了向后兼容,使得开发者能够在不破坏已有实现的情况下,向接口添加新的方法。
默认方法使用default
关键字标记,示例如下:
当一个类实现了该接口时,它可以直接调用默认方法,也可以选择覆盖它。
静态方法(Static Methods)
Java 8 同样允许在接口中定义静态方法。这意味着现在可以在接口中定义完整的静态方法,而不只是变量。这使得接口可以有一个更完整的功能性,你可以将一些通用的工具方法放在接口中。
静态方法使用static
关键字标记,示例如下:
静态方法只能通过接口名来调用,而不能通过实现接口的类或者对象来调用。
例子
假设有一个名为Vehicle
的接口,我们希望在其中包含一个默认方法print
和一个静态方法blowHorn
。
在这个例子中,Car
类实现了Vehicle
接口,并覆盖了print
方法。我们可以直接调用Vehicle
接口的静态方法blowHorn
。
总结
默认方法和静态方法是Java 8对接口的重大增强,它们使接口功能更加强大,增加了接口的灵活性,同时保持了与旧版本Java代码的兼容性。默认方法使接口具备了方法实现的能力,有助于接口的逐步演化而不破坏现有的实现;静态方法使得接口能够有自己的辅助方法,无需外部类或枚举。