记录一下对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漫谈——增强接口
解决什么问题 向下兼容.添加方法,所有的实现类必须实现此方法,否则会编译报错.这意味着每一次的接口升级都会伤筋动骨.但是这是一把双刃剑一定要把握好场景,不要滥用. 类爆炸.使用时,需要辅助类.即要记忆 ...
随机推荐
- 详解HashMap源码解析(上)
jdk版本:1.8 数据结构: HashMap的底层主要基于数组+链表/红黑树实现,数组优点就是查询块,HashMap通过计算hash码获取到数组的下标来查询数据.同样也可以通过hash码得到数组下标 ...
- AI 企业多云存储架构实践 | 深势科技分享
2020 年末,谷歌旗下 DeepMind 研发的 AI 程序 AlphaFold2 在国际蛋白质结构预测竞赛上取得惊人的准确度,使得" AI 预测蛋白质结构"这一领域受到了空前的 ...
- Overfitting & Train Set & Test Set
假设数据集是独立同分布的,可以将数据集划分为不同的比例:Train Set and Test Set. 同时在Train Set and Test Set上做精度测试,或者隔一段时间在Test Set ...
- Android刷第三方Recovery &获取root权限
一.基础环境 Make sure your computer has working adb and fastboot. Setup instructions can be found here. E ...
- 07 MySQL_事务
事务 事务( transaction) 是数据库中执行同一业务多条SQL语句 工作单元,事务可以保证多条SQL语句全部执行成功或全部执行失败 和事务相关的SQL语句: 验证事务: 1. 创建表: cr ...
- 多线程与高并发(一)—— 自顶向下理解Synchronized实现原理
一. 什么是锁? 在多线程中,多个线程同时对某一个资源进行访问,容易出现数据不一致问题,为保证并发安全,通常会采取线程互斥的手段对线程进行访问限制,这个互斥的手段就可以称为锁.锁的本质是状态+指针,当 ...
- javaweb 03: jsp
JSP 我的第一个JSP程序: 在WEB-INF目录之外创建一个index.jsp文件,然后这个文件中没有任何内容. 将上面的项目部署之后,启动服务器,打开浏览器,访问以下地址: http://loc ...
- AtCoder Beginner Contest 247 F - Cards // dp + 并查集
原题链接:F - Cards (atcoder.jp) 题意: 给定N张牌,每张牌正反面各有一个数,所有牌的正面.反面分别构成大小为N的排列P,Q. 求有多少种摆放方式,使得N张牌朝上的数字构成一个1 ...
- 基于gRPC编写golang简单C2远控
概述 构建一个简单的远控木马需要编写三个独立的部分:植入程序.服务端程序和管理程序. 植入程序是运行在目标机器上的远控木马的一部分.植入程序会定期轮询服务器以查找新的命令,然后将命令输出发回给服务器. ...
- Go语言基础三:基本数据类型和运算符
Go语言数据类型 与其他编程语言一样,Go语言提供了各种数据类型,可分为基本的数据类型和复杂的数据类型.基本的数据类型就是基本的构造块,例如字符串.数字和布尔值.复杂的数据类型是用户自己定义的结构,由 ...