记录一下对jdk8后的接口的一些理解
- 对于jdk8后的接口,接口中加入了可以定义默认方法和静态方法。
为什么要这样设计呢?
- 是为了在给接口扩展方法的时候,不会影响已经实现了该接口的类
- 加入默认方法可以解决:在添加方法的同时,不影响现有的实现类
下面演示了一下默认方法和静态方法的使用:
interface A{
// jdk8之后接口中可以加入默认、静态方法。
// 是为了在给接口扩展方法的时候,不会影响已经实现了该接口的类。
// 加入默认方法可以解决:在添加方法的同时,不影响现有的实现类
//定义默认方法
default void getA() {
System.out.println("接口A的默认方法");
}
//定义静态方法
static void getB(){
System.out.println("接口A的静态方法");
}
}
class B implements A{
public static void main(String[] args) {
A.super.getA();
B b = new B();
//调用子类重写后的父类的默认方法
b.getA();
// 直接调用父类接口的静态方法
A.getB();
}
// 子类显式地调用父类的默认方法
public void getA() {
A.super.getA();
}
}
如果子类实现类该接口,那么子类可以覆盖接口的默认方法,也可以显式地调用父类的默认方法。
在Java中,属性都是public static final修饰的
记录一下对jdk8后的接口的一些理解的更多相关文章
- 记录ASP.NET Web API 服务接口响应时间
实现起来很简单,一个Filter就可以搞定!!! /// <summary> /// 监控接口执行时间 /// </summary> public class TimingAc ...
- chrome 抓包的小功能--preserve log (记录页面跳转后,所有的抓包记录)
1.记录页面跳转后,所有的抓包记录,勾上
- go语言中在变量后加上接口是什么意思?
如题刚刚开始学习go 语言有些不懂: a.Data = make(map[string]interface{}) 我认为它是在申请a.Data map为字符串类型的空间,那么它后面接一个空的inter ...
- JDK8 直接定义接口中静态方法
JDK8前,接口只能是抽象方法. 但是在JDK8中,静态方法是可以直接定义方法体,可以直接用接口名调用.实现类和实现是不可以调用的 一.直接调用接口的静态方法 二.实现接口的子类来调用接口的静态方法 ...
- 分页查询——Hibernate Criteria实现一次查询取得总记录数和分页后结果集
使用Hibernate criteria进行分页查询时,如何实现一次查询取得总记录数和分页后结果集 - bto310 - ITeye博客 https://bto310.iteye.com/blog/1 ...
- jdk8下的接口和抽象类
接口 在java8中,接口可以定义变量和方法,其中变量必须为 public && static && final: 方法必须为public && (ab ...
- Thread类与Runnable接口的深入理解
Thread类与Runnable接口的深入理解1.Thread类实现了Runnable接口,实现run方法,其中target参数对应的就是一个Runnable接口的实现类 @Override publ ...
- win7 安装JDK7和JDK8后,卸载JDK8后出错
这是本人学习Java过程中遇到的一些问题和解决方法,在此记录,方便本人查看,解决他人疑惑. 本人win7 x64旗舰版,同时安装了JDK7和JDK8,卸载了JDK8之后,cmd命令行输入:java - ...
- JDK8漫谈——增强接口
解决什么问题 向下兼容.添加方法,所有的实现类必须实现此方法,否则会编译报错.这意味着每一次的接口升级都会伤筋动骨.但是这是一把双刃剑一定要把握好场景,不要滥用. 类爆炸.使用时,需要辅助类.即要记忆 ...
随机推荐
- Burnside 引理与 Pólya 定理
群 群的定义 在数学中,群是由一种集合以及一个二元运算所组成的,符合"群公理"的代数结构. 一个群是一个集合 \(G\) 加上对 \(G\) 的二元运算.二元运算用 \(\cdot ...
- 机器学习基础:用 Lasso 做特征选择
大家入门机器学习第一个接触的模型应该是简单线性回归,但是在学Lasso时往往一带而过.其实 Lasso 回归也是机器学习模型中的常青树,在工业界应用十分广泛.在很多项目,尤其是特征选择中都会见到他的影 ...
- 从傅里叶级数(Fourier series)到离散傅里叶变换(Discrete Fourier transform)
从傅里叶级数(Fourier series)到离散傅里叶变换(Discrete Fourier transform) 一. 傅里叶级数(FS) 首先从最直观的开始,我们有一个信号\(x(t)\)(满足 ...
- 攻防世界MISC—进阶区1-10
1.something_in_image zip中的文件用010 Editor打开后直接搜索flag,即可找到flag 2.wireshark-1 zip内是pcap文件,打开后根据题目知道要寻找登录 ...
- 使用xpath查找元素的子元素,找不到
List<WebElement> allUserList = driver.findElements(By.xpath("xxx")); for (WebElement ...
- 沁恒CH32V103C8T6(二): Linux RISC-V编译和烧录环境配置
目录 沁恒CH32V103C8T6(一): 核心板焊接和Windows开发环境配置 沁恒CH32V103C8T6(二): Linux RISC-V编译和烧录环境配置 硬件准备 CH32V103 开发板 ...
- treap(小根堆)模板
总结教训 对于treap使用小根堆性质,一定要特判左右子树是否存在,因为空节点的优先级为0,是最高的,不特判会出错我就这么错了,so 一定要特判!一定要特判!一定要特判!重要的事情说三遍 本文代码根据 ...
- oracle删除超过N天数据脚本
公司内做的项目是工厂内的,一般工厂内数据要求的是实时性,很久之前的数据可以自行删除处理,我们数据库用的oracle,所以就想着写一个脚本来删除,这样的话,脚本不管放在那里使用都可以达到效果 由于服务器 ...
- JS计算文本字符串字节长度和像素长度的方法
来源:js获取字符长度并计算px宽度 - [云]风过无痕 - 博客园 (cnblogs.com) <!DOCTYPE html> <html lang="en"& ...
- Yii项目知识搜集
[['rId','advertiser_id','image_file'], 'unique','targetAttribute'=>['rId','advertiser_id','image_ ...