📅  最后修改于: 2023-12-03 15:15:54.953000             🧑  作者: Mango
Java 8 引入了一项重要的特性,即“默认方法”(default methods),也称为“扩展方法”或“Defender方法”。默认方法使得接口能够拥有具体的方法实现,这样一来,我们就可以向已有的接口中添加新的方法,而不会影响已有的实现类。
默认方法为Java的接口提供了一种向后兼容的方法扩展机制,允许接口的实现类在不改变已有代码的情况下,对接口进行扩展。这一特性主要是为了解决Java的接口单继承问题而引入的。
默认方法的语法很简单,只需在接口中使用 default
关键字来定义一个默认方法。
public interface MyInterface {
// 默认方法
default void myMethod() {
// 执行代码
}
}
接口中的默认方法可以有方法体,也可以没有。在接口中定义的默认方法可以被实现类直接继承和使用。
下面是一个示例,演示了如何在接口中使用默认方法:
public interface MyInterface {
void method1(); // 抽象方法
default void method2() {
// 默认方法实现
System.out.println("执行默认方法");
}
}
public class MyClass implements MyInterface {
public void method1() {
// 实现 method1()
System.out.println("执行实现方法");
}
}
public class Main {
public static void main(String[] args) {
MyClass obj = new MyClass();
obj.method1(); // 执行实现方法
obj.method2(); // 执行默认方法
}
}
一个接口可以同时拥有多个默认方法。如果一个类实现了多个接口并且这些接口具有相同的默认方法,则实现类必须覆盖默认方法并提供自己的实现,以消除歧义。
默认方法的一个重要功能是它们可以被接口的实现类继承。如果一个接口继承了另一个接口,并且两个接口都定义了同名的默认方法,那么实现类只需要覆盖其中一个默认方法,就可以同时实现两个接口。
public
或者不加修饰符(默认为 public
)。默认方法是Java 8 引入的一项新特性,使得接口能够拥有具体的方法实现。默认方法为Java的接口提供了一种向后兼容的方法扩展机制,使得我们可以在不破坏已有代码的情况下,对接口进行扩展。它在解决Java接口单继承问题的同时,提供了更大的灵活性和代码复用性。