JDK1.8新特性

Posted virgosnail

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JDK1.8新特性相关的知识,希望对你有一定的参考价值。

1. interface的default方法和static方法

  • 接口中可以定义static方法,可通过接口名称.方法名()调用,实现类不能继承static方法;
  • 接口中可以定义default方法,default修饰的方法有方法体,表示这个方法的默认实现,子类可以直接调用,可以选择重写或者不重写;
  • 当实现类实现的多个接口中,有方法签名相同的default方法时,必须重写该方法;

  接口一:

package com.skd.interfacemethod;

/**
 * @Description
 * @Author virgosnail
 * @Date 2018/12/12
 */

public interface Human {

    /**
     * 必须被重写
     */
    void oldMethod();

    /**
     * 实现类可以选择重写,也可以不重写
     */
    default void hi(){
        System.out.println("interface default method");
    }

    /**
     * 不能被实现类重写
     */
    static void hello(){
        System.out.println("interface static method");
    }
}

  接口二:

package com.skd.interfacemethod;

/**
 * @Description
 * @Author virgosnail
 * @Date 2018/12/12 20:59
 */

public interface Humen {

    default void hi(String aa){
        System.out.println("interface default method");
    }
}

  实现类:

package com.skd.interfacemethod;

/**
 * @Description
 * @Author virgosnail
 * @Date 2018/12/12
 */

public class Person implements Human,Humen {

    @Override
    public void oldMethod() {

    }

    /**
     * 实现的多个接口中有方法签名相同的default 方法时,实现类必须重写该方法
     */
    @Override
    public void hi() {

    }
    /**
     * 实现类不能继承接口的static 方法
     */
}

  测试类:

package com.skd.interfacemethod;

/**
 * @Description
 * @Author virgosnail
 * @Date 2018/12/12
 */

public class Test {
    public static void main(String[] args) {
        // interface 的 default 方法通过实现类的实例对象调用
        new Person().hi();
        // interface 的 static 方法通过 接口名称.方法名称直接调用
        Human.hello();

    }
}

 

以上是关于JDK1.8新特性的主要内容,如果未能解决你的问题,请参考以下文章

JAVA 8 主要新特性 ----------------JDK1.8优点概括

JDK1.8新特性

Java8(JDK1.8)新特性

jdk1.8新特性Lambda表达式方法引用

jdk1.8新特性之lambda表达式

jdk1.8新特性