文档章节

Java8新特性之接口

liululee
 liululee
发布于 2018/07/22 12:31
字数 640
阅读 42
收藏 1

在JDK8以前,我们定义接口类中,方法都是抽象的,并且不能存在静态方法。所有的方法命名规则基本上都是 public [返回类型] [方法名](参数params) throws [异常类型] {}。 JDK8为接口的定义带来了一些新的改变——接口中可以定义默认(default)方法和静态(static)方法。接下来我们来看看这两个新特性吧~~

1.default方法

上代码!(说实话,多BB啥的还不如老老实实两行代码来的简单实际)

public interface Calculate {
    int add(int a, int b);

    double divide(int a, int b);
}

现在我们要实现这个接口的话,JDK1.8以前肯定是这么写的

public class CalculateImpl implements Calculate {
    @Override
    public int add(int a, int b) {
        return a + b;
    }

    @Override
    public double divide(int a, int b) {
        return a/b;
    }
}

然后我们调用计算接口

public static void main(String[] args) {
    Calculate calculate = new CalculateImpl();
    int x = calculate.add(1,2);
    double y = calculate.divide(3, 1);
    System.out.println("add: " + x +", divide: "+ y);
}

好了,这个时候突然来了个新功能,我们要新增一个方法, 实现(两个数的和)*(两个数的商),而现在这个Calculate 接口又有很多实现的方法,JDK1.8之前,我们要在接口定义一个方法,然后每个实现类都要去实现这个方法,代码修改量很大。而有了default方法, 我们可以直接在Calculate接口新增一个方法

  default double hybrid(int a, int b){
        return add(a,b) * divide(a,b);
    }

这样就可以直接在接口实现类中调用default 方法,接口的实现都不需要改变。如果有实现方式不同的,可以重写方法进行相应的实现。 #####总结:

  • (1)default方法可以被子接口继承亦可被其实现类所调用。
  • (2)default方法被继承时,可以被子接口覆写

2.static方法

接口里的静态方法,即有static修饰的方法不会被继承或者实现,但是静态变量会被继承。 在Calculate接口写一个静态方法。

  //生成min-max的随机整数
    static int randomNum(int min, int max){
        return new Random().nextInt(max-min+1)+min;
    }

调用只需要Calculate.randomNum(min, max)就行了。

好了,关于Java8接口的新特性就介绍到这里了。

© 著作权归作者所有

共有 人打赏支持
liululee
粉丝 94
博文 39
码字总数 34805
作品 0
杭州
程序员
私信 提问
Java8新特性:函数式接口@FunctionalInterface使用说明

Java8新特性:接口静态方法与默认方法 Java8新特性:函数式接口@FunctionalInterface使用说明 Java8新特性:方法引用 Java8新特性:函数式编程 我们常用的一些接口Callable,Runnable,Comparato...

键走偏锋
2018/08/05
0
0
Java8新特性–Interface中的default方法(接口默认方法)

在Java8的新特性中有一个新特性为接口默认方法,该新特性允许我们在接口中添加一个非抽象的方法实现,而这样做的方法只需要使用关键字default修饰该默认实现方法即可。该特性又叫扩展方法。 ...

DanyCoder
2018/05/15
0
0
Java8新特性(一)_interface中的static方法和default方法

为什么要单独写个Java8新特性,一个原因是我目前所在的公司用的是jdk8,并且框架中用了大量的Java8的新特性,如上篇文章写到的stream方法进行过滤map集合。stream方法就是接口Collection中的...

阳光温暖
2018/07/31
0
0
30分钟入门Java8之默认方法和静态接口方法

30分钟入门Java8之默认方法和静态接口方法 作者:@JohnTsai 本文为作者原创,转载请注明出处:http://www.cnblogs.com/JohnTsai/p/5598036.html 30分钟入门Java8之默认方法和静态接口方法 前...

spinachgit
2018/01/12
0
0
Java8新特性系列(Interface)

在Java8版本以前,Interface接口中所有的方法都是和,那么在Java8中,Interface有什么新特性呢? 静态成员 在Java8以前,我们要定义一些常量,一般会写一个类,类中都是的一些变量,如下: ...

码上论剑
2018/02/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周一乱弹 —— 白掌柜说了卖货不卖身

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @爱漫爱 :这是一场修行分享羽肿的单曲《Moony》 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :开不开心? 开心呀, 我又不爱睡懒觉…...

小小编辑
今天
7
0
大数据教程(11.7)hadoop2.9.1平台上仓库工具hive1.2.2搭建

上一篇文章介绍了hive2.3.4的搭建,然而这个版本已经不能稳定的支持mapreduce程序。本篇博主将分享hive1.2.2工具搭建全过程。先说明:本节就直接在上一节的hadoop环境中搭建了! 一、下载apa...

em_aaron
今天
2
0
开始看《JSP&Servlet学习笔记》

1:WEB应用简介。其中1.2.1对Web容器的工作流程写得不错 2:编写Servlet。搞清楚了Java的Web目录结构,以及Web.xml的一些配置作用。特别是讲了@WebServlet标签 3:请求与响应。更细致的讲了从...

max佩恩
今天
4
0
mysql分区功能详细介绍,以及实例

一,什么是数据库分区 前段时间写过一篇关于mysql分表的的文章,下面来说一下什么是数据库分区,以mysql为例。mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可...

吴伟祥
今天
3
0
SQL语句查询

1.1 排序 通过order by语句,可以将查询出的结果进行排序。放置在select语句的最后。 格式: SELECT * FROM 表名 ORDER BY 排序字段ASC|DESC; ASC 升序 (默认) DESC 降序 1.查询所有商品信息,...

stars永恒
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部