接口新特性--java进阶day03
1.接口新特性
在JDk8和JDK9开始,接口可以定义普通方法

这时就会感到很奇怪,明明之前说好接口只是用来制定规则的,为什么现在又可以定义普通方法了呢?
我们以一个公司案例进行讲解,公司1.0上线了接口,之后有新项目,要更新接口,但我们都知道,接口如果写了新的方法,之前所有实现类都要进行重写,动一线牵全身,十分不方便

2.接口的方法定义

.
想要在接口中定义带有逻辑的方法,需要加入关键字default

注意1:
接口中带有逻辑的方法,实现类也可进行重写,要去除default

实现类访问接口的method()使用的是Inter.super 这是因为接口是干爹,前面的Inter是一个标识,让super明白访问的是接口,如果单纯使用super,访问的就是亲爹
实现类默认继承Object,又因为method()是我们自己写的,Object里没有,所以报错

注意2:
当实现类实现了多个接口,接口中又有相同的方法名和不同的逻辑,这时实现类就必须重写接口中的方法
如下图,接口A和Inter都有method(),但各自的方法逻辑不同,此时实现类就必须重写method(),否则系统也不知道该用哪个method(),就会报错

重写了之后,我们可以选择用谁的method()

3.接口允许定义静态方法

.

接口中静态方法编写格式和我们之前学的一样

注意1:
接口中的静态方法,只允许接口名进行调用,不允许实现类用对象调用

.

4.接口允许定义私有方法

这时有人可能会产生疑问,私有化了,方法也不能通过实现类用对象调了,还有什么意义
如下图,假设接口里的成员方法都有相同的代码,这时我们就将该代码写成一个新的方法,再供其他方法调用,使代码变得更加整洁

.

但是这样还存在安全隐患,log()可以被调用,但我们知道,log()仅是供start()和end()记录的,直接调用没有意义,因此,我们要将log()私有化,由此私有化的意义得来
注意1:接口中私有化不能带default

5.接口允许静态私有化方法

原因:如果start和end都是静态方法,静态访问静态,log不是静态就没意义

接口新特性--java进阶day03的更多相关文章
- Atitit swt 4.3 4.4 4.5 新特性java attilax总结
Atitit swt 4.3 4.4 4.5 新特性java attilax总结 1. 4.5 Release - June 3, 20151 1.1. Older Releases1 2. SWT ...
- Java 接口 新特性(Java8)
Java8新特性之接口增强 在Java7以及以前的版本中,接口里的方法都是抽象的,并且不存在静态方法,属性默认修饰符是public static final.所有方法的声明都是public [返回类型 ...
- Java SE 6 新特性: Java DB 和 JDBC 4.0
http://www.ibm.com/developerworks/cn/java/j-lo-jse65/index.html 长久以来,由于大量(甚至几乎所有)的 Java 应用都依赖于数据库,如何 ...
- Java8接口新特性
概述 Java 8中,你可以为接口添加静态方法和默认方法.从技术角度来说,这是完全合法的,只是它看起来违反了接口作为一个抽象定义的理念.猜想设计初衷可能使为了兼容8以下的jdk Java8出来了个函数 ...
- vue3.0新特性以及进阶路线
Vue3.0新特性/改动 新手学习路线 ===> 起步 1. 扎实的 JavaScript / HTML / CSS 基本功.这是前置条件. 2. 通读官方教程 (guide) 的基础篇.不要 ...
- stringBuffer、StringBuilder、排序、Arrays、Jdk1.5新特性(java基础知识十三)
1.StringBuffer类的概述 * A:StringBuffer类概述 * 通过JDK提供的API,查看StringBuffer类的说明 * 1.线程安全的可变字符序列. * 2.可将字符串缓冲 ...
- 4、java基础:JDK8接口新特性以及接口和抽象类区别
在jdk8之前,interface之中可以定义变量和方法,变量必须是public.static.final的,方法必须是public.abstract的.由于这些修饰符都是默认的,所以在JDK8之前, ...
- Java8新特性 - Java内置的四大核心函数式接口
Java内置的四大核心函数式接口 Consumer:消费型接口 对类型为T的对象应用操作,包含方法:void accept(T t) public class TestLambda02 { publi ...
- Java7 新特性 —— java.nio.file 文件操作
本文部分摘自 On Java 8 自 Java7 开始,Java 终于简化了文件读写的基本操作,新增了 java.nio.file 库,通过与 Java8 新增的 stream 结合可以使得文件操作变 ...
- java8的接口新特性(可以有方法体的接口)(转)
以前Java的接口中定义的方法不可以有方法体,这样试用起来,有时候听不方便的,当有多个类实现了想同的接口,接口中某一些方法的实现体可能都是一样的时候,这样无疑浪费了很多时间,在写重复的代码(或者说co ...
随机推荐
- DVWA靶场Weak Session IDs(弱会话) 漏洞所有级别通关教程及源码审计
Weak Session IDs(弱会话) Weak Session IDs(弱会话ID)漏洞是一种安全漏洞,涉及在 web 应用程序中使用不安全或容易被猜测的会话标识符(Session IDs).会 ...
- Python学习(四)——配套《PyTorch深度学习实战》
1. Python中字符串的相加和相乘 在Python中,字符串可以通过加号(+)进行相加(连接),也可以通过乘号(*)进行相乘(重复).以下是这两种操作的详细说明和示例: 字符串的相加(连接) 字符 ...
- JS端实现图片、视频时直接下载而不是打开预览
项目中的附件列表,通常情况都需要提供下载.删除的功能,功能本身没有什么要说的,都是基本功能,使用浏览器的的下载功能,也都是用window.open(url),或者window.location.hre ...
- 数据库数据实时采集--Maxwell
1.Maxwell 简介 Maxwell 是一个能实时读取 MySQL 二进制日志文件binlog,并生成 Json格式的消息,作为生产者发送给 Kafka,Kinesis.RabbitMQ.Redi ...
- 史上最全memcached面试26题和答案
Memcached是什么? Memcached是一个开源的,高性能的内存绶存软件,从名称上看Mem就是内存的意思,而Cache就是缓存的意思. Memcached的作用? Memcached的作用:通 ...
- .NET Core GC计划阶段(plan_phase)底层原理浅谈
简介 在mark_phase阶段之后,所有对象都被标记为有用/垃圾对象.此时,垃圾回收器已经拥有启动垃圾回收的所有前置准备工作. 这个时候,垃圾回收期应该执行"清除回收"还是&qu ...
- linux:配置NTP
介绍 网络时间协议(Network Time Protocol,NTP),用于同步网络中各个计算机的时间的协议.其用途是将计算机的时钟同步到世界协调时 UTC. ntpd(Network Time P ...
- 认识soui4js(第4篇):定义一个窗口类,响应控件的事件
soui4js基于soui4设计实现. 首先我们看一下soui4中如何定义一个窗口类. soui4最基本的窗口类是SHostWnd和SHostDialog,它需要一个布局xml. 假定布局xml在资源 ...
- Linux VXLAN小实验
本文分享自天翼云开发者社区<Linux VXLAN小实验>,作者:李****一 前言 VXLAN在云网络中应用十分广泛.本文介绍一种方法在两台Linux主机之间建立简单的VXLAN隧道,以 ...
- Windows中使用http-server搭建一个本地服务
我们在开发中,经常会需要搭建一个本地服务去浏览开发的静态html文件,如果当静态文件中存在一些http.https或者访问文件之类的请求时,直接双击打开html文件是会报错预览不成功的,这时候就需要将 ...