Daisy Donergue 多莫歌·黛西

“By woman, you mean her?” 她也能叫女人?

  Java 8在13年9月发布,写这篇博文的时间已经是17年12月份了。来的有点晚,但是有必要补一下1.8的特性。

  一、基本介绍

  Java 8中接口里已经完全可以定义静态方法了. 举一个比较普遍的例子就是在java类库中, 对于一些接口如Foo, 都会有一个有静态方法的工具类Foos 来生成或者配合Foo对象实例来使用. 既然静态方法可以存在于接口当中, 那么大多数情况下 Foos工具类完全可以使用接口中的公共方法来代替 (或者将Foos置成package-private).

  上边的话理解起来就是接口中可以使用default关键字来修饰接口中的方法,打破了接口中不能写方法实现的弊端,也对原来的概念有了极大的冲击,因为之前一直在讲:“接口中不能有方法的实现”,but not now。所以现在更容易混淆的概念是:可以写方法实现可以多继承的接口,可以写方法实现但只能单继承的抽象类。所以再被问起接口中是否可以写实现,你回答的就能直接体现出你是否了解过1.8。代码如下:

interface Formula { //接口中实现了sqrt的默认算法,只需要使用 default关键字即可,在实现类中只需要实现calculate方法即可使用calculate和sqrt两个方法
double calculate(int a);
default double sqrt(int a) {
return Math.sqrt(a);
}
}

  在过去,java类库的接口中添加方法基本上是不可能的. 在接口中添加方法意味着破坏了实现了这个接口的代码。弥补了Java一直以来不支持多继承,但支持多继承的接口不能写方法实现的缺点。但是现在, 只要能够提供一个正确明智的默认的方法的实现, java类库的维护者就可以在接口中添加方法。

  二、具体使用中的问题

  1、接口多继承情况下,同时继承的两个或多个接口中有同样的方法进行的实现,那么实现类中怎么不冲突?在不指明实现类方法指向的是继承自哪个接口的情况下,编译时会直接报错。所以解决方案就是,

    ①在实现类中指明使用了哪个父接口的方法,

    ②实现类中重写方法

  2、同时继承了接口和基类,而接口和基类中的同名方法都进行了实现,如何避免冲突?

    当同时继承了接口和基类,方法冲突时。实现类默认继承基类中的方法,也就是说基类优先级比接口高。当然也可以选择重写。

参考链接:

http://www.oschina.net/translate/everything-about-java-8

图片来源:八恶人(movie)

Java 8新特性之接口改善(八恶人-1)的更多相关文章

  1. Java 8新特性之 Nashorn(八恶人-6)

    Joe Gage 盖奇·乔 “First time in my life I made a pretty penny.And, figured I'd come home and spend time ...

  2. Java 8新特性之Stream(八恶人-3)

    “You John Ruth The Hangman” 绞刑者鲁斯·约翰 “When the Hangman catches you, you hang.”当被绞刑者抓住了,你肯定会被绞死 一.基本介 ...

  3. Java 8新特性之lambda(八恶人-2)

    Major Marquis Warren 沃伦·马奎斯少校 “Tring to get a couple of bounties in to Red Rock.”我想带几个通缉犯去红石镇 一.基本介绍 ...

  4. Java 8新特性之 Optional(八恶人-5)

    Oswaldo Mobray 莫博瑞·奥斯瓦尔多 “I‘m Oswaldo Mobray, the hangman in these parts.” “我是莫博瑞·奥斯瓦尔多,这片地区的绞刑官.” 一 ...

  5. Java 8新特性之 Base64(八恶人-7)

    "General" 我是个将军 “ You, sir a hyena. I hava no wish to speak to you.”  “你就是一个土狗,你不配跟我说话” 一. ...

  6. Java 8新特性-2 接口定义增强

    为了解决当原有的接口中方法不足时,向原有的接口中添加新的方法,该接口下的N多实现类也需要重写该方法的问题!Java8引入了接口定义增强概念! Java8 打破了原有的接口的方法定义: 公共的.抽象的  ...

  7. Java 8新特性探究(八)精简的JRE详解

    http://www.importnew.com/14926.html     首页 所有文章 资讯 Web 架构 基础技术 书籍 教程 Java小组 工具资源 - 导航条 - 首页 所有文章 资讯 ...

  8. Java 8 新特性1-函数式接口

    Java 8 新特性1-函数式接口 (原) Lambda表达式基本结构: (param1,param2,param3) -> {代码块} 例1: package com.demo.jdk8; i ...

  9. Java 8 新特性:1-函数式接口

    (原) Java 8 新特性1-函数式接口 Lambda表达式基本结构: (param1,param2,param3) -> {代码块} Lambda表达式结构: (type1 arg1,typ ...

随机推荐

  1. VS 代码段

    系统默认代码段 代码段名 描    述 #if 该代码段用#if和#endif命令围绕代码 #region 该代码段用#region和#endregion命令围绕代码 ~ 该代码段插入一个析构函数 a ...

  2. CAN总线几种正常的“异常”波形

    CAN总线几种正常的“异常”波形 [复制链接]       电梯直达 楼主    hubaba 发表于 2016-3-28 14:00 | 只看该作者  摘要 工程师们通常使用示波器观察CAN总线的信 ...

  3. 20155202张旭《网络对抗技术》 week1 PC平台逆向破解及Bof基础实践

    20155202张旭<网络对抗技术> week1 PC平台逆向破解及Bof基础实践 1.实践目标: 实践对象:一个名为pwn1的linux可执行文件. 该程序正常执行流程是: main调用 ...

  4. 20155209 林虹宇 Exp 8 Web基础

    Exp 8 Web基础 Web前端HTML 正常安装.启停Apache kali本机自带apache,上个实验已经使用过,直接使用 查看80端口. 127.0.0.1 编写一个含有表单的html 在浏 ...

  5. 《图说VR入门》——DeepoonVR的大鹏(陀螺仪)枪

    <图说VR入门>--VR大朋的(陀螺仪)枪 本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接: http://blog.csdn.net/cartzhang/ar ...

  6. POJ 2965&&1753

    最近由于复习备考(然而考得还是很炸),很久没打题目了.现在开始刷寒假作业,不得不搞POJ 话说没有中文真的好烦啊! 先看1753 题目大意是说在一个4*4的格子中有黑白两色的棋子,你可以翻动其中的棋子 ...

  7. 前端项目模块化的实践3:使用 TypeScript 的收益

    以下是关于前端项目模块化的实践,包含以下内容: 搭建 NPM 私有仓库管理源码及依赖: 使用 Webpack 打包基础设施代码: 使用 TypeScript 编写可靠类库 使用 TypeScript ...

  8. 3dmax2020下载安装3dmax2020破解中文版下载安装

    3dmax在室内设计.建筑设计领域是最专业的效果图制作软件,也是在游戏动画等领域中在场景方面最专业的软件,目前最新3dmax2020版本已出,我分享亲测好用的软件包,拿走不谢! 3dmax2020安装 ...

  9. 云服务器+tomcat+mysql+web项目搭建部署

    云服务器+tomcat+mysql+web项目搭建部署 1.老样子,开头墨迹两句. 作为我的第二篇文章,有很多感慨,第一篇人气好低啊,有点小丧气,不过相信我还是经验少,分享的都是浅显的,所以大家可能不 ...

  10. ffmpeg sox 音频转换 MP3 转 wav

    转自:https://blog.csdn.net/xiaoshulf/article/details/78657172 1 windows 下 mp3 文件和 wav 文件的 转换 实现代码: 1 f ...