文档章节

Java8新特性之接口

developlee的潇洒人生
 developlee的潇洒人生
发布于 07/22 12:31
字数 640
阅读 15
收藏 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接口的新特性就介绍到这里了。

© 著作权归作者所有

共有 人打赏支持
developlee的潇洒人生
粉丝 55
博文 32
码字总数 28083
作品 0
杭州
程序员
Java8新特性:函数式接口@FunctionalInterface使用说明

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

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

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

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

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

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

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

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

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

码上论剑
02/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

java序列化(七) - fst 序列化

java序列化(七) - fst 序列化 github https://github.com/RuedigerMoeller/fast-serialization 实践 https://gitee.com/mengzhang6/serializable-demo.git maven依赖 <!-- https://mvnrepo......

晨猫
29分钟前
2
0
智力问题汇总

南京新建地铁线路,给你2块钱,测出来需要配置多少辆车? 参考答案:根据地铁有固定时间间隔,坐一圈该线路,推算出需要多少辆。 一共50张卡片,上面写着1--50 ,50个数字,藏起来一张,打乱...

职业搬砖工程师
33分钟前
2
0
ZFS-自我恢复RAID

ZFS-自我恢复RAID 这个给了我一个简单而又强大的理由,让我立马为之折服,ZFS可以自动的检测发生的错误,而且,可以自我修复这些错误。假设有一个时刻,磁盘阵列中的数据是错误的,不管是什么...

openthings
42分钟前
2
0
从Hash到一致性Hash原理(深度好文)

要讲一致性Hash原理,先从一般性Hash讲起,其实Hash的本质就是一个长度可变的数组,那为什么Hash的时间复杂度是O(1),而其他类型的数据结构查找都是要遍历来,遍历去,即便是树,二叉树,也是要经过几...

算法之名
55分钟前
22
0
软件测试工具书籍与面试题汇总下载(持续更新)

简介 本文是https://github.com/china-testing/python-api-tesing/blob/master/books.md 的节选。 欢迎转载,转载请附带此简介,谢谢! 试题 软件测试综合面试题(高级测试)-试题.pdf 软件测试...

python测试开发人工智能安全
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部