Java 8 接口中的默认方法与静态方法

1. 接口中的默认方法

允许接口中包含具有具体实现的方法,该方法称“默认方法”,默认方法使用用 default 关键字修饰。

public interface MyInf1 {

    default String getName(){
return "MyInf-1";
}
}

接口默认方法的 "类优先" 原则

若一个接口中定义了一个默认方法,而另外一个父类或接口又定义了一个同名的方法时:

  1. 选择父类中的方法。如果类提供了具体的实现,那接口中具有相同名称和参数的默认方法会被忽略。

  2. 接口冲突。如果一个父接口提供一个默认方法,而另一个接口也提供了一个具有相同名称和参数列表的方法(不管方法否是默认方法),那么必须覆盖该方法来解决冲突。

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 新特性

  1. Java 8 Lambda 表达式
  2. Java 8 Stream API
  3. Java 8 Optional 类深度解析
  4. Java 8 新时间日期 API
  5. Java 8 接口中的默认方法与静态方法
  6. Java 8 可重复注解与类型注解

Java 8 接口中的默认方法与静态方法的更多相关文章

  1. Java8新特性Optional、接口中的默认方法与静态方法

    Optional Optional 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用 null 表示一个值不存在,现在 Optional 可以更好的表达这个概念 ...

  2. 【Java8新特性】接口中的默认方法和静态方法,你都掌握了吗?

    写在前面 在Java8之前的版本中,接口中只能声明常量和抽象方法,接口的实现类中必须实现接口中所有的抽象方法.而在Java8中,接口中可以声明默认方法和静态方法,本文,我们就一起探讨下接口中的默认方法 ...

  3. JDK8.0接口中的默认方法和静态方法

    我们在接口中通常定义的方法是抽象方法,即没有方法体,只有返回值类型和方法名:(public abstract) void Method(); 类在实现接口的时候必须重写抽象方法才可以 jdk8中新加的 ...

  4. Java8接口中的默认方法

    Java8新增特性,可以为接口中添加默认方法,实现这个接口的所有类都会继承这个方法,这样看起来,接口和类的界限就有点不明显了,同时也会带来多继承,菱形问题.这样设计的初衷是什么? 重所周知,java8 ...

  5. Java8新特性_接口中的默认方法

    默认方法由来猜想 1. Collection接口.Collections公共类.  同是操作集合,为啥要搞俩?没必要.在接口中搞一些默认实现,一个接口即搞定了. 2. Java8支持Lambda表达式 ...

  6. Java自学-接口与继承 默认方法

    默认方法 步骤 1 : 什么是默认方法 默认方法是JDK8新特性,指的是接口也可以提供具体方法了,而不像以前,只能提供抽象方法 Mortal 这个接口,增加了一个默认方法 revive,这个方法有实现 ...

  7. Java 8——接口中个的默认方法和静态方法

    在Java SE 8之前,interface只是事物的抽象,用来定义统一的抽象事物和描述事物的抽象行为和属性. 但是在Java SE 8中,增加了可以在interface中增加默认实现的行为和事物的静 ...

  8. Java8新特性之四:接口默认方法和静态方法

    在JDK1.8以前,接口(interface)没有提供任何具体的实现,在<JAVA编程思想>中是这样描述的:"interface这个关键字产生了一个完全抽象的类,它根本就没有提供 ...

  9. jdk8系列一、jdk8 Lamda表达式语法、接口的默认方法和静态方法、supplier用法

    一.简介 毫无疑问,Java 8是Java自Java 5(发布于2004年)之后的最重要的版本.这个版本包含语言.编译器.库.工具和JVM等方面的十多个新特性. 在本文中我们将学习这些新特性,并用实际 ...

随机推荐

  1. python 字符串与字节之间的相互转化

    1.将字符串转化成字节 b'fffff' bytes('ffff', encoding='utf-8') 'ffff'.encode('utf-8') 2.将字节转化成字符串 str(data, en ...

  2. uva-10050-模拟水题

    一个社会研究组织决定通过一组简单的参数来模拟国家政党的行为.第一个参数一个正整数h(叫做罢工参数),用于指示在对应的政党在俩个连续休假之间的平均天数.虽然这个参数太简单了,它不是最完美的参数.但是它还 ...

  3. rsync同步web数据

    rsync远程同步web服务器的数据 实验拓扑                                            服务器A(rsync服务器)--------------服务器B( ...

  4. python入门-函数(二)

    1 函数传递参数 def greet_users(names): """向列表中的每个用户都发处问候""" for name in name ...

  5. 代码: 返回页面顶部 jquery

    jquery代码: 返回页面顶部 <script type="text/javascript" src="http://cdn.bootcss.com/jquery ...

  6. OpenACC 云水参数化方案

    ▶ 书上第十三章,用一系列步骤优化一个云水参数化方案.用于熟悉 Fortran 以及 OpenACC 在旗下的表现 ● 代码,文件较多,放在一起了 ! main.f90 PROGRAM main US ...

  7. PHP过滤各种HTML标签的表达式,值得收藏

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...

  8. elt区间分布

    select DATE_FORMAT(CURDATE(),'%Y%m%d') DateId,elt(interval(curnum,0, 10000,20000,30000,40000,50000, ...

  9. jpa summary

    JPA Prepared by: John Tan March, Contents what Where to use JPA Difference between JPA and Mybatis 1 ...

  10. Jsch - java SFTP 文件上传下载

    使用Jsch上传.下载文件,核心步骤是:获取channel,然后使用get/put方法下载.上传文件 核心代码句: session = jSch.getSession(ftpUserName, ftp ...