Java 8 接口中的默认方法与静态方法
Java 8 接口中的默认方法与静态方法
1. 接口中的默认方法
允许接口中包含具有具体实现的方法,该方法称“默认方法”,默认方法使用用 default 关键字修饰。
public interface MyInf1 {
default String getName(){
return "MyInf-1";
}
}
接口默认方法的 "类优先" 原则
若一个接口中定义了一个默认方法,而另外一个父类或接口又定义了一个同名的方法时:
选择父类中的方法。如果类提供了具体的实现,那接口中具有相同名称和参数的默认方法会被忽略。
接口冲突。如果一个父接口提供一个默认方法,而另一个接口也提供了一个具有相同名称和参数列表的方法(不管方法否是默认方法),那么必须覆盖该方法来解决冲突。
public class MyClass {
public String getName(){
return "MyClass";
}
}
public class SubClass extends MyClass implements MyInf1{
}
//1. 忽略接口中的方法
public static void main(String[] args) {
SubClass sc = new SubClass();
System.out.println(sc.getName()); // MyInf-1
}
public interface MyInf2 {
default String getName(){
return "MyInf-2";
}
}
//2. getName 方法必须重写以解决冲突
public class SubClass implements MyInf1, MyInf2 {
@Override
public String getName() {
return MyInf2.super.getName();
}
}
2. 接口中的静态方法
Java 8中,接口中允许添加静态方法
public interface MyInf2 {
public static void show(){
System.out.println("接口中的静态方法");
}
}
Java 8 新特性
- Java 8 Lambda 表达式
- Java 8 Stream API
- Java 8 Optional 类深度解析
- Java 8 新时间日期 API
- Java 8 接口中的默认方法与静态方法
- Java 8 可重复注解与类型注解
Java 8 接口中的默认方法与静态方法的更多相关文章
- Java8新特性Optional、接口中的默认方法与静态方法
Optional Optional 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用 null 表示一个值不存在,现在 Optional 可以更好的表达这个概念 ...
- 【Java8新特性】接口中的默认方法和静态方法,你都掌握了吗?
写在前面 在Java8之前的版本中,接口中只能声明常量和抽象方法,接口的实现类中必须实现接口中所有的抽象方法.而在Java8中,接口中可以声明默认方法和静态方法,本文,我们就一起探讨下接口中的默认方法 ...
- JDK8.0接口中的默认方法和静态方法
我们在接口中通常定义的方法是抽象方法,即没有方法体,只有返回值类型和方法名:(public abstract) void Method(); 类在实现接口的时候必须重写抽象方法才可以 jdk8中新加的 ...
- Java8接口中的默认方法
Java8新增特性,可以为接口中添加默认方法,实现这个接口的所有类都会继承这个方法,这样看起来,接口和类的界限就有点不明显了,同时也会带来多继承,菱形问题.这样设计的初衷是什么? 重所周知,java8 ...
- Java8新特性_接口中的默认方法
默认方法由来猜想 1. Collection接口.Collections公共类. 同是操作集合,为啥要搞俩?没必要.在接口中搞一些默认实现,一个接口即搞定了. 2. Java8支持Lambda表达式 ...
- Java自学-接口与继承 默认方法
默认方法 步骤 1 : 什么是默认方法 默认方法是JDK8新特性,指的是接口也可以提供具体方法了,而不像以前,只能提供抽象方法 Mortal 这个接口,增加了一个默认方法 revive,这个方法有实现 ...
- Java 8——接口中个的默认方法和静态方法
在Java SE 8之前,interface只是事物的抽象,用来定义统一的抽象事物和描述事物的抽象行为和属性. 但是在Java SE 8中,增加了可以在interface中增加默认实现的行为和事物的静 ...
- Java8新特性之四:接口默认方法和静态方法
在JDK1.8以前,接口(interface)没有提供任何具体的实现,在<JAVA编程思想>中是这样描述的:"interface这个关键字产生了一个完全抽象的类,它根本就没有提供 ...
- jdk8系列一、jdk8 Lamda表达式语法、接口的默认方法和静态方法、supplier用法
一.简介 毫无疑问,Java 8是Java自Java 5(发布于2004年)之后的最重要的版本.这个版本包含语言.编译器.库.工具和JVM等方面的十多个新特性. 在本文中我们将学习这些新特性,并用实际 ...
随机推荐
- HTML5 学习之地理定位
html5 获取坐标: <!DOCTYPE HTML> <html> <head> <title>test1.html</title> &l ...
- 0_Simple__simpleStreams
对比使用单流和多流(4条)情况下数据拷贝,以及数据拷贝加内核调用的效率差别.▶ 源代码 #include <stdio.h> #include <cuda_runtime.h> ...
- 子元素scroll父元素容器不跟随滚动JS实现
仅供参考: function parentNotRoll($id){ var flg;//标记滚动方向,true-向下,false-向上 var $test = document.getElement ...
- linux 下创建文本的方法
1. 打开终端,输入 vi 1.txt 输入:wq 文本创建成功 2. 打开终端,输入 vim 1.txt 输入:wq 文本创建成功 3. 打开终端 , 输入 touch 1.txt ...
- java ee7 软件安装和环境配置
1. java ee sdk 最新版下载地址 Java EE软件开发包(Software Development Kit, SDK) http://www.oracle.com/technetwork ...
- div 标签
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- shelve模块使用说明
一种字典形式储存数据的方式 import datetime, shelve d = shelve.open('shelve_test.txt') info = {'age':22, 'job':'it ...
- requireJS-初识
浅谈requireJS 2016-04-26 21:44 by 猴子猿, 726 阅读, 0 评论, 收藏, 编辑 项目中大都使用模块化开发,requireJS作为AMD模块开发的典范,所以有必要学习 ...
- Json字符串转Dictionary
/// <summary> /// json字符串转Dictionary /// </summary> /// <param name="json"& ...
- Spring Boot 菜鸟入门(持续更新)
目录 问题一 Note 最近入了Java的坑,正在学习spring boot.记录一下遇到的问题吧. 问题一 请求参数的问题 /get/bob我想获取bob @RequestMapping(value ...