📜  接口java中的默认方法(1)

📅  最后修改于: 2023-12-03 14:54:42.986000             🧑  作者: Mango

接口Java中的默认方法

在Java8中,接口中可以有默认方法。默认方法就是在接口中定义方法的实现,任何实现该接口的类都会继承该方法的默认实现。这样的特性可以使得接口更加灵活,但是也增加了一些注意事项。

定义默认方法

默认方法的定义形式如下:

public interface MyInterface {
    default void myDefaultMethod() {
        System.out.println("This is the default implementation of myDefaultMethod");
    }
}

上述代码中,接口MyInterface中定义了一个默认方法myDefaultMethod。如果一个类实现了接口MyInterface但没有具体实现该方法,那么该类将自动继承接口中的默认实现。如果一个类想要覆盖该方法,也可以在该类中覆盖该方法。

public class MyClass implements MyInterface {
    @Override
    public void myDefaultMethod() {
        System.out.println("This is my implementation of myDefaultMethod");
    }
}

在类MyClass中覆盖了接口MyInterface中的方法myDefaultMethod

注意事项
  • 默认方法必须使用关键字default修饰。
  • 默认方法可以在接口中有实现,也可以在接口中没有实现,只是提供一个默认实现。
  • 默认方法可以被实现该接口的类覆盖。
  • 如果一个类实现了多个接口,那么如果这些接口中有名字相同的默认方法,那么该类必须覆盖该方法,否则将导致编译错误。
  • 如果一个类继承了一个父类,同时实现了一个接口,而这个父类和接口中有名字相同的方法,那么该类会优先使用父类中的方法。
  • 默认方法不能用于Object类中的方法,例如equals()hasCode()toString()等方法。
  • 默认方法不能调用接口中的私有方法,但是默认方法可以调用接口中的静态方法。
结论

Java8中引入了接口中的默认方法,其主要作用在于让接口更加灵活,但是也增加了一些注意事项,需要开发者在使用的同时,注意相关规范和规则的约束。