龙空技术网

关于JDK1.8接口支持静态方法和默认方法

程序员界的彭于晏 2096

前言:

此时咱们对“静态方法能不能被继承”大体比较关切,朋友们都需要知道一些“静态方法能不能被继承”的相关知识。那么小编在网上收集了一些关于“静态方法能不能被继承””的相关内容,希望你们能喜欢,朋友们快快来学习一下吧!

JDK1.8之前的接口的定义和限制

接口不能用于实例化对象。

接口没有构造方法。

接口中所有的方法必须是抽象方法。

接口不能包含成员变量,除了 static 和 final 变量。

接口不是被类继承了,而是要被类实现。

接口支持多继承。

JDK1.8接口支持静态方法和默认方法

默认方法主要优势:

1、提供了一种扩展接口的方法,而不破坏现有代码。

如果一个已经投入使用的接口需要扩展一个新的方法,在JDK8以前,我们必须再该接口的所有实现类中都添加该方法的实现,否则编译会出错。如果实现类数量很少且我们有修改的权限,可能工作量会少,但是如果实现类很多或者我们没有修改代码的权限,这样的话就很难解决了。而默认方法提供了一个实现,当没有显式提供时就默认采用这个实现,这样新添加的接口就不会破坏现有的代码。

2、默认方法另一个优势是该方法是可选的,子类可以根据不同的需求而且经override或者采用默认实现。

总结:

1、接口默认方法、静态方法可以有多个。

2、默认方法通过实例调用,静态方法通过接口名调用。

3、default默认方法关键字只能用在接口中。

4、默认方法可以被继承,如果继承了多个接口,多个接口都定义了多个同样的默认方法,实现类需要重写默认方法不然会报错。

5、静态方法不能被继承及覆盖,所以只被具体所在的接口调用。

标签: #静态方法能不能被继承