除了默认方法之外,Java 8之前的接口只能定义抽象方法,即没有方法体的方法声明。这些抽象方法需要在实现接口的类中进行重写,提供自定义的实现。
在Java 8之后,除了默认方法和抽象方法,接口还可以定义静态方法。静态方法属于接口本身,可以直接通过接口名称调用,无需实例化接口的对象。
下面是一个示例,展示了接口中定义抽象方法、默认方法和静态方法的方式:
在上述示例中,MyInterface接口定义了三种类型的方法:
抽象方法:abstractMethod()是一个抽象方法,没有方法体。实现该接口的类必须提供该方法的具体实现。
默认方法:defaultMethod()是一个默认方法,提供了一个默认的实现。实现类可以使用默认实现,也可以选择重写该方法。
静态方法:staticMethod()是一个静态方法,属于接口本身。可以直接通过接口名称调用,无需实例化接口的对象。
需要注意的是,接口中的抽象方法和默认方法都可以被实现类选择性地重写,而静态方法不能被重写。
这些不同类型的方法允许接口在提供抽象行为的同时,还可以提供默认实现和公共的静态方法。这为接口的使用者提供了更大的灵活性和功能扩展性。