开发者社区> 一切总会归于平淡> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

【JDK8 新特性2】JDK 8 接口默认方法/静态方法

简介: 在JDK 8以前接口中只能有抽象方法。存在以下问题: 如果给接口新增抽象方法,所有实现类都必须重写这个抽象方法。不利于接口的扩展。
+关注继续查看

JDK 8以前的接口:

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

JDK 8对接口的增强,接口还可以有默认方法静态方法
JDK 8的接口:

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

1、接口默认方法

在JDK 8以前接口中只能有抽象方法。存在以下问题:
如果给接口新增抽象方法,所有实现类都必须重写这个抽象方法。不利于接口的扩展。
例如,JDK 8 时在Map接口中增加了 forEach 方法:

public interface Map<K, V> { 
    ... 
    abstract void forEach(BiConsumer<? super K, ? super V> action); 
}

通过API可以查询到Map接口的实现类如:
8.png
如果在Map接口中增加一个抽象方法,所有的实现类都需要去实现这个方法,那么工程量时巨大的。
因此,在JDK 8时为接口新增了默认方法,效果如下:
9.png
接口中的默认方法实现类不必重写,可以直接使用,实现类也可以根据需要重写。
这样就方便接口的扩展。

1.1 接口默认方法的定义格式

interface 接口名 { 
    修饰符 default 返回值类型 方法名() { 
        代码; 
    } 
}

1.2 接口默认方法的使用

1.2.1 实现类直接调用接口默认方法

定义接口默认方法:
10.png
测试类编写代码:
11.png

1.2.2 实现类重写接口默认方法

12.png

2、接口静态方法

为了方便接口扩展,JDK 8为接口新增了静态方法。

2.1 接口静态方法的定义格式

interface 接口名 { 
    修饰符 static 返回值类型 方法名() {
        代码; 
    } 
}

2.2 接口静态方法的使用

直接使用接口名调用即可:接口名.静态方法名();
代码
接口
13.png
测试类
14.png

3、接口默认方法和静态方法的区别

  1. 默认方法通过实例调用,静态方法通过接口名调用。
  2. 默认方法可以被继承,实现类可以直接使用接口默认方法,也可以重写接口默认方法。
  3. 静态方法不能被继承,实现类不能重写接口静态方法,只能使用接口名调用。

如何选择呢?
如果这个方法需要被实现类继承或重写,使用默认方法,如果接口中的方法不需要被继承就使用静态方法。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【JDK8 新特性4】方法引用
在介绍方法引用前,我们要来了解Lambda表达式的冗余场景,虽然Lambda表达式已经帮我们简化的不少代码,但是它还是会有冗余的情况。
19 0
JDK8新特性之方法引用
最近刚好有空给大家整理下JDK8的特性,这个在实际开发中的作用也是越来越重了,本文重点讲解下方法引用。
52 0
【Hadoop】Hadoop2.8编译
今天来讲【Hadoop】Hadoop2.8编译
21 0
JDK1.8 新特性
JDK1.8 新特性
82 0
JDK8新特性之函数式接口
什么是函数式接口 先来看看传统的创建线程是怎么写的
39 0
微信JS-SDK选择图片遇到的坑
微信JS-SDK选择图片遇到的坑 有个需求要在微信企业号里面做开发,有个功能是选择图片,使用input标签肯定是不管用了,Android手机上不能多选,所以使用了微信的JS-SDK提供的相关API,这个地方真的是有坑,记录一下。
1113 0
JDK8新特性与生产
我今天主要希望和业界交流JDK8新特性在实际生产中的表现。
4881 0
no result type defined for type 'dispatch'mapped
自己打算弄个webwork测试问题时候,遇到个脑瘫的问题,配了xwork之后,死活找不到action,报There is no result type defined for type 'dispatcher' mapped with name '...
619 0
+关注
一切总会归于平淡
在活着的每一天,跳舞吧。 用脚尖着地,
72
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载