(详细+示例)JDK8新特性一:引入介绍

目录

第一篇:JDK8新特性一:引入介绍
第二篇:JDK8新特性二:Lambda表达式引入介绍
第三篇:JDK8新特性二:Lambda表达式规范和语法
第四篇:JDK8新特性二:方法引入详述
第五篇:JDK8新特性二:foreach、排序、线程调用简单示例
第六篇:JDK8新特性三:Stream流+常见方法演示
第七篇:JDK8新特性四:Optional类的学习

JDK8新特性

一 引入介绍

  • 在jdk8之前,interface中可以定义变量和方法,变量默认是public static final的,方法默认是public abstract的,这些修饰符也都是默认存在的。

  • jdk8之后,interface中开始支持使用static和default修饰,可以写方法体,不需要实现类强制重写

  • 代码示例

    • 接口

      package com.fc;
      
      /**
       * @ClassName JDK8Interface
       * @Description     JDK8新特性-接口中默认方法修饰为普通方法
       * @Author Fclever
       * @Date 2021/7/15 23:27
       */
      public interface JDK8Interface {
      
          /**
           * 接口中变量默认修饰符就是public static final
           * IDEA会自动灰色提示
           */
          public static final int num = 0;
      
          /**
           * 接口中方法默认修饰符就是public abstrat
           * IDEA会自动灰色提示
           */
          public abstract void add();
      
          /**
           * 这样写,IDEA会提示“在接口中无法定义方法体”
           */
      //    void get() {
      //        System.out.println("get");
      //    }
      
          /**
           * jdk8提供默认方法
           * 在实现类中不会被要求强制重写
           */
          default void defaultMethod() {
              System.out.println("defaultMethod");
          }
      
          /**
           * 也可以使用static静态方法
           * 在实现类中不会被要求强制重写
           */
          static void staticMethod() {
              System.out.println("staticMethod");
          }
      }
      
      
    • 实现类

      package com.fc;
      
      /**
       * @ClassName JDK8InterfaceImpl
       * @Description     接口实现类
       * @Author Fclever
       * @Date 2021/7/15 23:41
       */
      public class JDK8InterfaceImpl implements JDK8Interface{
      
          /**
           * 实现类中不会强制重写接口中的default、static方法
           */
          @Override
          public void add() {
              System.out.println("add");
          }
      }
      
      
    • 测试

      package com.fc;
      
      /**
       * @ClassName Test01
       * @Description
       * @Author Fclever
       * @Date 2021/7/15 23:46
       */
      public class Test01 {
      
          public static void main(String[] args) {
              JDK8Interface jdk8Interface = new JDK8InterfaceImpl();
              jdk8Interface.add();
              jdk8Interface.defaultMethod();
              JDK8Interface.staticMethod();
          }
      }
      
      
  • 作用

    • 当某个接口被多个实现类所实现的时候,如果对于某个接口中的方法,实现内容都相同时,如果采用以前的方法定义,那么在实现类中都必须将此方法重写,无疑会提高代码的冗余度,jdk8之后接口中可以定义默认方法,这样子就可以直接统一在接口中编写好方法体,供实现类调用即可
    • 实现类中可以使用接口中的default方法,也可以将其重写
    • 实现类中不能直接通过对象调用的方式来使用static方法,只能被接口自身调用,而且无法被实现类重写。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值