文档章节

Java8新特性之接口

developlee的潇洒人生
 developlee的潇洒人生
发布于 07/22 12:31
字数 640
阅读 4
收藏 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的潇洒人生
粉丝 14
博文 17
码字总数 12208
作品 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

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JS三元运算示例

1. topFlag=topFlag ==0?1:0; 等于 if(topFlag=00){ topFlag=1; }else if(topFlag == 1){ topFlag=0; } 2. 5>3?alert('5大'):alert('3大'); 即 if(5>3){alert('5大')}else{alert('3大')}; 注......

森火
今天
0
0
利用Slf4j的MDC跟踪方法调用链

why? 一个web项目通常提供很多URL访问地址, 项目一般都是分层处理,例如Controller——>Service——>DAO。 如果想根据日志查看用户一次请求都走了哪些方法(多数是查错误)。 如果系统是多人...

杨春炼
今天
9
0
Maven介绍及安装

Maven介绍及安装 以下内容是本人早期学习时的笔记,可能比较详实繁琐,现在复习一下Maven,顺便将内容抛出来,供大家一起学习进步。 一、Maven简介 Maven是Apache旗下的一款项目管理工具,是...

星汉
今天
0
0
小程序Aes解密

主要步骤: 1、下载AES源码(JS版) 2、在小程序中新建一个公共的文件夹,把AES源码拷贝进去(注意:需要暴露接口 module.exports = CryptoJS;) 3、添加一个用于加密解密的公共JS,可取名为...

Mr_Tea伯奕
今天
0
0
Go实现文件传输(基本传输可用)

发送端 package mainimport ("fmt""os""net""io")func SendFile(path string, connect net.Conn){file, oerr :=os.Open(path)if oerr !=nil{fmt.Println("Open", oerr)......

CHONGCHEN
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部