Java方法的默认实现和静态方法
JDK1.8 通过使用关键字
其实,这样做的最重要的一个目的就是为了实现接口升级。在原有的设计中,如果想要升级接口,例如给接口中添加一个新的方法,那么会导致所有实现这个接口的类都需要被修改,这给 Java 语言已有的一些框架进行升级带来了很大的麻烦。如果接口能支持默认方法的实现,那么可以给这些类库的升级带来许多便利。
例如,为了支持 Lambda 表达式,Collection 中引入了
声明:《Java系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。
default
可以给接口中的方法添加默认实现,此外,接口中还可以定义静态方法,示例代码如下所示:
interface Inter8 { void f(); default void g() { System.out.println("this is default method in interface"); } static void h() { System.out.println("this is static method in interface"); } }那么,为什么要引入接口中方法的默认实现呢?
其实,这样做的最重要的一个目的就是为了实现接口升级。在原有的设计中,如果想要升级接口,例如给接口中添加一个新的方法,那么会导致所有实现这个接口的类都需要被修改,这给 Java 语言已有的一些框架进行升级带来了很大的麻烦。如果接口能支持默认方法的实现,那么可以给这些类库的升级带来许多便利。
例如,为了支持 Lambda 表达式,Collection 中引入了
foreach
方法,可以通过这个语法增加默认的实现,从而降低了对这个接口进行升级的代价,不需要所有实现这个接口的类进行修改。声明:《Java系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。