跳至主要內容

接口中新增的方法

cylin...大约 2 分钟

Java 8 开始是可以有方法实现的,可以在接口中添加默认方法和静态方法。

默认方法用 default 修饰,只能用在接口中,静态方法用 static 修饰

JDK8中接口的新增

在JDK8中针对接口有做增强,在JDK8之前

interface 接口名{
	静态常量;
	抽象方法;
}

JDK8之后

interface 接口名{
	静态常量;
	抽象方法;
    
   // 新增
	默认方法;
	静态方法;
}

为什么要有接口默认方法?

举一个很现实的例子:

我们的接口老早就写好了,后面因为各种业务问题,避免不了要修改接口。

在 Java 8 之前,比如要在一个接口中添加一个抽象方法,那所有的接口实现类都要去实现这个方法,不然就会编译错误,而某些实现类根本就不需要实现这个方法也被迫要写一个空实现,改动会非常大。

所以,接口默认方法就是为了解决这个问题,只要在一个接口添加了一个默认方法,所有的实现类就自动继承,不需要改动任何实现类,也不会影响业务,爽歪歪。

另外,接口默认方法可以被接口实现类重写

为什么要有接口静态方法?

接口静态方法和默认方法类似,只是接口静态方法不可以被接口实现类重写

接口静态方法只可以直接通过静态方法所在的 接口名.静态方法名 来调用

接口默认方法多继承冲突问题

因为接口默认方法可以被继承并重写,如果继承的多个接口都存在相同的默认方法,那就存在冲突问题。 默认方法优先于抽象方法