`
第一次认识梦想
  • 浏览: 2452 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

JAVA8 新特性 边学边记(三) Default Methods

阅读更多
Default Methods enable you to add new functionality to the interfaces of your libraries and ensure binary compatibility with code written for older versions of those interfaces. They are interface methods that have an implementation and the default keyword at the beginning of the method signature. In addition, you can define static methods in interfaces.
Default Methods使得你可以为interface增加方法,并保证基于变更前所写的代码的兼容性(binary compatibility)。他们是一些已经实装的方法,并且在方法签名(method signature)的最前面有default关键字做修饰。另外,你还可以在interface中定义静态方法。



在java 8以前的版本,我们对interface的认识通常是大概是以下这个样子
1.所有方法均为 虚方法
2.所有方法默认 public
3.一个实装类如果实现一个interface必须实现这个interface所有的虚方法。

好了,现在问题来了,如果一个interface因为某些需要要增加一个方法,
那么,之前实现这个interface的所有实装类都需要进行变更,增加这个方法的定义。
这就为维护造成了很大的麻烦。


在java8增加了一个新的语言特性 --- interface里面的方法可以定义为实装方法,包括默认方法(default methods)和于静态方法。

public interface sample {
  default void test() {
    System.out.println("just a sample");
  }

  static void testUtil() {
    System.out.println("just a sample for util method");
  }
}


这样,实现了该interface的实装类就可以不必实装(一部分已经默认实装)所有的方法了。
于是,当interface发生变更的时候,保证了接口与之前实装好的代码的兼容性。
分享到:
评论

相关推荐

    黑马程序员_java8新特性详解笔记和源码

    本文将深入探讨Java 8的三大关键新特性:接口的默认方法实现、Lambda表达式以及一系列相关的变化。 一、接口的默认方法实现 在Java 8之前,接口只能定义抽象方法,而不能包含具体实现。Java 8引入了默认方法...

    JAVA8新特性讲解

    以下是关于Java 8新特性的详细讲解: 1. **函数式编程:Lambda表达式** Lambda表达式是Java 8中最显著的新特性,它允许我们将函数作为一个方法参数,或者以匿名函数的形式创建。Lambda表达式简洁且易于理解,使得...

    java8新特性代码

    然后,Java8为接口添加了默认方法(default methods)和静态方法。默认方法用`default`关键字标注,允许我们在不破坏向后兼容性的前提下,为接口添加新的功能。这些方法有一个实现,可以被接口的实现类继承。例如,`...

    Java 8特性教程

    接下来,我们将详细解读Java 8中的几个核心新特性,并通过实例加以说明。 1. 默认接口方法(Default Interface Methods) Java 8允许开发者在接口中定义具体的方法实现,而不是仅仅局限于抽象方法。通过使用default...

    Java8新特性笔记

    这篇笔记将详细解析Java8的核心新特性,帮助开发者深入理解并掌握这些改变。 1. **函数式编程引入**:Java8引入了Lambda表达式,这是对函数式编程的一种支持。Lambda允许我们将函数作为参数传递给方法,或者作为...

    Java8 新特性.rar

    此外,Java8还引入了默认方法(default methods)、Optional类来避免空指针异常、 Nashorn JavaScript引擎以支持在Java中执行JavaScript代码等特性。 总结,Java8的新特性极大地改善了Java的开发体验,使代码更简洁...

    Java8新特性知识梳理

    Java 8 是一个重要的Java版本,它引入了许多新特性,极大地提升了开发效率和代码的可读性。其中,最引人注目的特性之一就是引入了流(Stream)API,这使得处理集合数据更加高效和简洁,支持声明式编程风格。 流API...

    【Java8新特带你看尽Java8新特性.zip

    Java 8是Java编程语言的一个重大更新,引入了许多新的特性和改进,旨在提高开发效率,增强功能,并且更好地适应现代编程需求。以下是Java 8的一些关键新特性: 1. **函数式编程:Lambda表达式** Java 8引入了...

    java8新特性总结自用

    ### Java 8 新特性详解 #### 一、接口的默认方法(Default Methods for Interfaces) Java 8 引入了一个重要的概念——默认方法,默认方法允许在接口中定义具体的方法实现,而不需要强制所有实现该接口的类都重写...

    Java 8特性全面解析

    Java 8是Java语言发展史上的一次重大更新,它引入了许多新特性,这些特性极大地增强了Java语言的功能,特别是在函数式编程领域。本文将全面解析Java 8的几个关键特性,包括Lambda表达式、函数式接口、方法引用以及新...

    JDK8新特性

    Java 8 是一个重要的版本更新,它引入了许多新特性,极大地提升了开发效率和代码的可读性。本文将深入探讨其中的关键变化,包括接口的默认方法、Lambda 表达式和函数式接口。 一、接口的默认方法 Java 8 引入了...

    Java8新特性与设计模式.zip

    Java 8是Java编程语言的一个重大更新,引入了许多新的特性和改进,旨在提高开发效率,增强代码可读性,并提供更强大的功能。设计模式作为软件工程中的重要概念,是解决常见问题的经验总结,Java 8的新特性与设计模式...

    Java8中文文档

    3. **默认方法**:在接口中,Java 8引入了默认方法(default methods),它们有实现的接口方法,可以在不破坏旧代码的情况下增加新功能。这使得接口能够添加新行为,而无需强制已实现该接口的类进行修改。 4. **...

    Java8新特性之默认方法(default)浅析

    Java8引入的默认方法(default methods)是一种创新的特性,旨在增强接口的功能性,同时避免对已有实现类的破坏。默认方法使用`default`关键字标识,允许接口包含具有默认实现的函数,使得开发者可以在不修改现有...

    jdk8新特性以及代码示例

    本文将详细介绍 Java 8 的新特性,包括默认接口方法、Lambda 表达式、方法引用和可重复注解等,并通过简单的代码示例来帮助读者理解如何使用这些新特性。 #### 默认接口方法(Default Methods for Interfaces) ...

    Java8 API.rar_JAVA8API_Java 8_java 8 api_java 8 api下载_java8

    Java 8还引入了默认方法(default methods)到接口中,这使得接口可以在不破坏已有实现的情况下添加新方法。默认方法通过在方法声明前加上`default`关键字,提供了接口扩展性的同时,保持了向后兼容性。 Optional类...

    java8接口新特性(函数式接口,lambda表达式)(csdn)————程序.pdf

    Java 8 是一个重要的 Java 发行版本,引入了许多新特性,特别是对函数式编程的支持。在本文中,我们将深入探讨两个关键的接口新特性:默认方法和静态方法,以及与之紧密相关的 Lambda 表达式。 1. **默认方法**: ...

    java8.pdf详细说明java8的使用说明

    Java 8是Java语言的一次重要更新,它引入了大量新特性以及API的改进,旨在提高Java开发者的生产力。以下是对Java 8新特性的详细知识点: 1. 默认接口方法(Default Interface Methods): Java 8允许在接口中使用...

    java8stream源码-Java-8-Reference:参考java8新特性

    中的新结构和特性的引用 接口和 Lambda 表达式 接口中的默认方法 Java 8 为接口引入了默认方法。 这些方法与类中的具体方法相同。 它们是用关键字 default 声明的。 interface INewInterface { void method1 (); ...

Global site tag (gtag.js) - Google Analytics