惊呆了!JDK1.8竟然打破了我对接口的一切认知...

云栖号资讯小哥 2020-08-03

架构 互联网 aliyun static class void

云栖号资讯:【点击查看更多行业资讯
在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来!

简介

我们通常所说的接口的作用是用于定义一套标准、约束、规范等,接口中的方法只声明方法的签名,不提供相应的方法体,方法体由对应的实现类去实现。

在JDK1.8中打破了这样的认识,接口中的方法可以有方法体,但需要关键字static或者default来修饰,使用static来修饰的称之为静态方法,静态方法通过接口名来调用,使用default来修饰的称之为默认方法,默认方法通过实例对象来调用。

静态方法和默认方法的作用:

静态方法和默认方法都有自己的方法体,用于提供一套默认的实现,这样子类对于该方法就不需要强制来实现,可以选择使用默认的实现,也可以重写自己的实现。当为接口扩展方法时,只需要提供该方法的默认实现即可,至于对应的实现类可以重写也可以使用默认的实现,这样所有的实现类不会报语法错误:Xxx不是抽象的, 并且未覆盖Yxx中的抽象方法。

示例

IHello接口

public interface IHello {

// 使用abstract修饰不修饰都行
void sayHi();

static void sayHello(){
System.out.println("static method: say hello");
}

default void sayByebye(){
System.out.println("default mehtod: say byebye");
}
}

HelloImpl实现类

public class HelloImpl implements IHello {
@Override
public void sayHi() {
System.out.println("normal method: say hi");
}
}

Main

public class Main {
  public static void main(String[] args) {
    HelloImpl helloImpl = new HelloImpl();
    // 对于abstract抽象方法通过实例对象来调用
    helloImpl.sayHi();
    // default方法只能通过实例对象来调用
    helloImpl.sayByebye();

    // 静态方法通过 接口名.方法名() 来调用
    IHello.sayHello();


    // 接口是不允许new的,如果使用new后面必须跟上一对花括号用于实现抽象方法, 这种方式被称为匿名实现类,匿名实现类是一种没有名称的实现类
    // 匿名实现类的好处:不用再单独声明一个类,缺点:由于没有名字,不能重复使用,只能使用一次
    new IHello() {
      @Override
      public void sayHi() {
      System.out.println("normal method: say hi");
      }
    }.sayHi();
  }
}

执行结果:

normal method: say hi 
default mehtod: say byebye 
static method: say hello 
normal method: say hi

这篇文章虽然简单,但是我觉得还是有必要分享一下,毕竟与1.7相比,发生了不少的变化,希望本文能对你有所帮助。

【云栖号在线课堂】每天都有产品技术专家分享!
课程地址:https://yqh.aliyun.com/zhibo

立即加入社群,与专家面对面,及时了解课程最新动态!
【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK

原文发布时间:2020-08-02
本文作者: 泡代码的小二黑
本文来自:“互联网架构师”,了解相关信息可以关注“互联网架构师

登录 后评论
下一篇
云栖号资讯小编
33750人浏览
2020-07-13
相关推荐
思维的局限
1774人浏览
2017-05-18 08:17:00
思维的局限
1007人浏览
2017-01-10 11:14:00
<font color="red">[置顶]</font>
1193人浏览
2016-01-02 22:01:00
AI时代是突破边界的时代
2019人浏览
2017-08-20 10:07:31
DAMS峰会归来
857人浏览
2017-07-07 23:50:38
关于网络捐款
1197人浏览
2015-05-31 23:27:22
艰辛的北京一周
1601人浏览
2014-04-29 17:38:00
[集合]Collection源码解析(1)
506人浏览
2019-09-10 13:54:54
0
0
0
376