java interface 默认_Java8 接口interface默认方法
在 java 8 之前,接口与其实现类之间的 耦合度 太高了(tightly coupled),当需要为一个接口添加方法时,所有的实现类都必须随之修改。默认方法解决了这个问题,它可以为接口添加新的方法,而不会破坏已有的接口的实现。接口默认方法有两种:
1. 非静态默认方法
定义
package com.test
public interface DefaultTest {
default void print() {
System.out.println("我是非静态方法!");
}
}
使用
package com.test
public class DefaultTestImpl implements DefaultTest {
@Override
public void print() {
DefaultTest.super.print(); // 继承父亲的内容
System.out.println("我是非静态方法儿子!");
}
public static void main(String[] args) {
new DefaultTestImpl().print();
}
}
2. 静态默认方法
定义
package com.test
public interface StaticTest {
static void print() {
System.out.println("我是静态方法!");
}
}
使用1
静态方法不能重写,只能使用。
package com.test
public class StaticTestImpl implements StaticTest {
public static void main(String[] args) {
StaticTest.print();
}
}
使用2
不在同一包下。
package com.another
import com.test.StaticTest;
public class StaticTestUser{
public static void main(String[] args) {
StaticTest.print();
}
}
参考文献
java interface 默认_Java8 接口interface默认方法相关推荐
- java程序设计_Java程序设计--接口interface(笔记)
有时必须从几个类中派生出一个子类,继承它们所有的属性和方法.但是,Java不支持多重继承.有了接口,就可以得到多重继承的效果. 有时必须从几个类中抽取出一些共同的行为特征,而它们之间又没有继承关系,仅 ...
- java interface_Java中的接口(interface)
Java中提倡面向接口编程,而不是面向类编程,个人理解就是将做什么和怎么做分开,以实现松耦合的目的. 基本数据类型分四类八种 : 整型.浮点型.字符型.布尔型: 引用数据类型分三种 : 类 . 接口 ...
- 晋南讲堂之Java抽象类(abstract)与接口(interface)区分
抽象类(abstract)和接口(interface)的对比 1. 抽象类(abstract) 我们一般声明一个抽象类按照如下形式: abstract class ClassName{//成员变量 ...
- Java多线程-实现Callable接口的call()方法,示例
创建步骤,首先实现Callable接口的call()方法并指定返回值:然后创建实现类实例:FutureTask类使用Callable实现类的实例通过FutureTask的单参数构造器创建FutureT ...
- Java中抽象类和接口的使用方法及区别
1.抽象类和接口 抽象类和接口为我们提供了实现类的公共行为规范,在继承它们时对里面的抽象方法进行重写就可以了. 抽象类:包含抽象方法和普通方法,抽象方法只需要声明就可以了,不需要写出方法体,此外,抽象 ...
- java duration 时间差_java8 计算时间差的方法示例
java8 计算时间差的方法示例 发布于 2020-4-3| 复制链接 摘记: 一.简述 在Java8中,我们可以使用以下类来计算日期时间差异: 1.Period 2.Duration 3.Chron ...
- java cloneable_java开发——Cloneable接口、clone()方法和深浅拷贝
1.实现Cloneable接口表明该类的对象是允许克隆的. 2.允许克隆的意思是:可以调用clone()方法. 3.深拷贝还是浅拷贝,取决于如何重写Object的clone()方法. 4.原对象和克隆 ...
- java uniqueresult_Hibernate之Query接口的uniqueResult()方法详解
如果查询返回多个值用list()方法 public void testQuery(){ Configuration config = new Configuration().configure(); ...
- 十三、Java高级特性 Lambda表达式 | 接口组成更新 | 方法引用 | 函数式接口
文章目录 十三.Java高级特性 1.Lambda表达式 1.1体验Lambda表达式[理解] 1.2Lambda表达式的标准格式[理解] 1.3Lambda表达式练习1[应用] 1.4Lambda表 ...
最新文章
- CMake命令之function
- 检查字符串是否包含数字
- eureka java_spring cloud 入门系列二:使用Eureka 进行服务治理
- ui设计师就业前景怎么样?
- python 获取二维数组所有元素
- 序号-element-序号根据页数和行数计算
- 《移动App测试实战》——1.4 本章小结
- android加不进去百度云,安装android-x86教程。(没法再贴吧发表,只有百度网盘在线阅读...
- 【Linux开发板学习教程】全免费超全面超详细
- 敏感词高效检测从浅到深
- 什么是鸭子类型(duck typing)
- 【gradle exclude冲突依赖】
- SpringBoot resultful风格返回格式
- Java基础学习过程
- 建立oracle数据库链接,Oracle数据库创建数据库连接(DBLink)详细讲解
- 二维离散动力学系统的混沌研究【基于matlab的动力学模型学习笔记_9】
- 一条蠕虫长1寸,在一口深为N寸的井的底部。已知蠕虫每1分钟可以向上爬U寸,但必须休息1分钟才能接着往上爬。在休息的过程中,蠕虫又下滑了D寸。就这样,上爬和下滑重复进行。请问,蠕虫需要多长时间才能爬出井
- 规范化定义你了解吗?
- 什么?你还没女伴?教你如何借助Python俘获女孩子芳心
- canvas绘制折线路径动画
热门文章
- Linux负载均衡Linux Virtual Server (lvs) 内核自带的负载均衡器
- Linux虚拟文件系统VFS的相关数据结构和操作
- 【HTML+CSS网页设计与布局 从入门到精通】第12章-CSS
- python加法赋值运算符为_Python 运算符
- fiddler修改支付金额_支付漏洞总结
- FaceDetector(人脸识别)
- oracle big table1,关于Big_Table脚本的一些有关问题
- python字符串转浮点数_python – 无法将字符串列表转换为浮点数
- 模型描述的关系模式_框架篇:见识一下linux高性能网络IO+Reactor模型
- c语言学习-自定义并调用函数求三个数的最小公倍数