简介

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

在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() {@Overridepublic 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相比,发生了不少的变化,希望本文能对你有所帮助。关注公众号互联网架构师,回复关键字2T,获取最新架构视频

作者: 泡代码的小二黑

来源:https://urlify.cn/UBriIr

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

  1. JDK1.8的新特性详解

    前言 现在开发用的最多的就是jdk1.8:因为它具备很多优点: 1.速度更快 由于底层结构和JVM的改变,使得JDK1.8的速度提高. 2.代码更少(增加了新的语法 Lambda 表达式) 增加新特性 ...

  2. JDK1.8 的 8 个新特性

    一.概述 jdk1.8 的一些新特性简化了代码的写法,减少了部分开发量.主要如下: Lambda 表达式 接口中的默认方法和静态方法 函数式接口 方法引用和构造器调用 局部变量限制 Stream AP ...

  3. 5500字干货:低代码/无代码技术编程为何而生?

    据了解,国外低代码平台Airtable在近日宣布完成2.7亿美元E轮融资,投资方为Greenoaks Capital Management.WndrCo.Thrive Capital.CRV.Caff ...

  4. 获得诺贝尔奖的底层小职员 | 从来没有一个高手,是在一夜之间强大起来的

    来源:Pinterest优选 2019年初NHK的一个访谈纪录片,看哭了很多网友. "感动,这才是真正的大神啊!" 纪录片的主人公,是2002年的诺贝尔化学奖得主--田中耕一. 十 ...

  5. 专访黄勇:Java在未来的很长一段时间仍是主流

     专访黄勇:Java在未来的很长一段时间仍是主流 发表于2015-09-06 13:18| 11640次阅读| 来源CSDN| 70 条评论| 作者钱曙光 社区文旦专访黄勇架构框架JavaJava ...

  6. js日历代码_JS无形装逼,最为致命

    单行简洁的代码很难维护(有时甚至难以理解),但这并不能阻止广大攻城狮们脑洞,在编写简洁的代码后获得一定的满足感. 以下我最近的一些收藏 javascript精简代码集合.它们都可以在你的开发控制台中运 ...

  7. 从挂科学渣到史上学历最低诺奖得主,他用17年时间重新证明自己

    命运馈赠的礼物,你早已暗中支付了筹码. 2月17日,NHK的一个访谈纪录片,感动了很多网友. 纪录片的主人公,是2002年的诺贝尔化学奖得主--田中耕一. 17年前,他的获奖,几乎是都市传说般的爆炸新 ...

  8. offer上不写具体薪资合理吗_拿着OFFER当白菜?职场菜鸟不带这么玩的

    近日看到某贴子上面问:S君同时面试几家公司,然后先后接到了A公司和B公司的offer. A公司的薪资要高一些,B公司上升空间大一些.但是,因为一个奇葩操作,鸡飞蛋打! 原来是S君属意B公司,但又希望入 ...

  9. 电脑课装b专用代码_JavaScript无形装X,最为致命

    点击上方"前端进阶周刊",选择"置顶或者星标" 期待你的关注! 除了三目运算,你还知道其他的装逼姿势吗?文末留言走你~~ 单行简洁的代码很难维护(有时甚至难以理 ...

  10. 推荐10款效率可以翻倍的IDEA插件,撸码利器

    点击上方蓝色字体,选择"标星公众号" 优质文章,第一时间送达 上一篇:这300G的Java资料是我师傅当年给我的,免费分享给大家(已修复) 下一篇:昨天分享资料不小心把百度网盘深处 ...

最新文章

  1. 信息抽取新SOTA!首个结构化生成式信息抽取预训练模型,一统信息抽取四大任务...
  2. Try to use JDK instead of JRE to debug source code
  3. cadence设计运算放大器_21.比较器的原理与特性,它与运算放大器的本质区别总结归纳...
  4. 团队项目——201181120
  5. CTA策略06_BollChannelStrategy
  6. 锐文科技发布基于国产FPGA的智能网卡芯片
  7. iOS 添加翼支付打包上传出错 ERROR ITMS-90535
  8. DAY7:尚学堂高琪JAVA(66~69)
  9. excel表格斜线_老中医坐诊,专治Word表格各种不服
  10. POJ 1371 Tin Cutter 笔记
  11. 什么是零信任?零信任的好处有哪些?
  12. 18岁创业从哪入手?读透这5点则事半功倍!
  13. 神经网络架构搜索——可微分搜索(DARTS)
  14. Django REST Framework中的Serializer relations
  15. 史上最牛叉的俄罗斯方块--game.cpp/.h
  16. 最近把beecloud,芝麻信用,智能门锁接入了系统。闲下来把遇到的一些坑排下,也能给后人一些指导
  17. websocket——Firefox 无法建立到 ws://... 服务器的连接
  18. win11 应用程序无法获取麦克风的声音
  19. MATLAB数学建模(四):机器学习
  20. 我的世界服务器进入显示器,关于minecraft:使用屏幕的系统服务:“未找到屏幕会话”...

热门文章

  1. 数据库查询性能优化之利器—索引(一)
  2. 主席树 POJ2104
  3. 如何基于MySQL及Redis搭建统一的KV存储服务
  4. 关闭迅雷“XLServicePlatform”服务 防止导致Win8假死
  5. modal verbs(一)
  6. SmartRoute之远程接口调用和负载
  7. 在OLT上查看SLAN
  8. indesign自学教程,如何保存文档?
  9. Mac如何制作分屏视频
  10. 如何在Mac上更改声音输出设置呢?