java8新特性-默认方法

简介: java8新特性-默认方法

1.默认方法

jdk8之前的接口

在jdk8之前接口(interface)中可以定义变量和方法,变量必须是public,static,final的;方法必须是public,abstract的,由于这个修饰符是默认必须的,我们通常省略不写。

public interface MyInterfaceByJava7 {
    //public static final int MY_CONSTANT = 10;
    int MY_CONSTANT = 10;
 
    //public void add();
    void add();
 
}

jdk8的接口

jdk8开始支持使用static、default修饰的方法,可以写方法体,并且不需要子类重写。

public interface MyInterfaceByJava8 {
  
  int MY_CONSTANT = 10;
 
    void add();
 
 
   public default void get() {
        // 默认实现
      System.out.println("默认get方法");
     
      }
 
   public static void del() {
        // 静态方法实现
        System.out.println("静态del方法");
        
      }
 
}

子类只需要重写抽象方法

public class MyInterfaceImpl implements MyInterfaceByJava8 {
 
  @Override
  public void add() {
    System.out.println("子类实现add方法");
    
  }
 
  
 
}

调用接口的默认方法和静态方法

2.默认方法的用途

提供新的 API 版本而不破坏二进制兼容性

当需要在一个接口中添加新的方法时,为了保证已存在的实现类仍然能够正常运行,通常需要对所有实现类进行修改。这会带来很大的工作量和风险。通过在接口中添加默认方法,可以在不破坏现有代码的情况下提供新的 API 版本。

弥补抽象类的不足

在 Java 中,抽象类是一种既可以包含抽象方法又可以包含具体方法的特殊类。但是,一个类只能继承一个抽象类,而可以实现多个接口。通过在接口中添加默认方法,可以弥补抽象类的不足,使得接口在一定程度上可以像抽象类一样提供通用的实现。

函数式接口提供便利

Java 8 引入了函数式接口,即只包含一个抽象方法的接口。函数式接口可以被 lambda 表达式和方法引用所使用。通过在函数式接口中添加默认方法,可以提供一些通用的、默认的实现,使得函数式接口的使用更加便利。

目录
相关文章
|
3天前
|
安全 Java 大数据
探索Java的奇妙世界:语言特性与实际应用
探索Java的奇妙世界:语言特性与实际应用
|
23天前
|
安全 Java 数据安全/隐私保护
|
23天前
|
搜索推荐 Java
Java的面向对象特性主要包括封装、继承和多态
【4月更文挑战第5天】Java的面向对象特性主要包括封装、继承和多态
15 3
|
17天前
|
Java
Java中ReentrantLock中tryLock()方法加锁分析
Java中ReentrantLock中tryLock()方法加锁分析
13 0
|
6天前
|
Java 关系型数据库 MySQL
Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
【4月更文挑战第12天】Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
33 3
|
1天前
|
存储 Java 索引
【JAVA】HashMap的put()方法执行流程
【JAVA】HashMap的put()方法执行流程
|
3天前
|
Java
Java 与垃圾回收有关的方法
Java 与垃圾回收有关的方法
|
3天前
|
Java
【Java基础】详解面向对象特性(诸如继承、重载、重写等等)
【Java基础】详解面向对象特性(诸如继承、重载、重写等等)
8 0
|
4天前
|
存储 Java 测试技术
一文搞清楚Java中的方法、常量、变量、参数
在JVM的运转中,承载的是数据,而数据的一种变现形式就是“量”,量分为:**常量与变量**,我们在数学和物理学中已经接触过变量的概念了,在Java中的变量就是在程序运行过程中可以改变其值的量。
14 0
|
8天前
|
存储 Java
Java动态转发代理IP的实现方法
Java动态转发代理IP的实现方法
23 11