JDK1.8 —— 接口定义增强

Posted wangyuyang1016

tags:

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

使用default和static定义接口方法

JDK1.8(jre8)以后,接口中不在仅仅只允许定义抽象方法,开始允许定义普通方法了;而普通方法需要用default声明。

interface IMessage {
    public void print(); // 一个接口定义的抽象方法
    default void fun() {// 接口中定义的普通方法
        //
        System.out.println("Hello,World!") ;
    }
}
class MessageImpl implements IMessage {
    public void print() {
        System.out.println("Hello,World!") ;
    }
}
public class TestDemo {
    public static void main(String [] args) {
        IMessage msg = new MessageImpl() ;
        msg.fun() ;// 直接调用在接口类中定义的方法
    }
}

 

上例代码中,使用defautl定义方法,defautl定义的方法是接口中的普通方法,可以被外部类通过接口类直接调用使用该普通方法。

interface IMessage {
    public void print(); // 一个接口定义的抽象方法
    default void fun() {// 接口中定义的普通方法
        //
        System.out.println("Hello,World!") ;
    }
    static void get() {
        System.out.println("Hello,Woeld!") ;
    }
}
class MessageImpl implements IMessage {
    public void print() {
        System.out.println("Hello,World!") ;
    }
}
public class TestDemo {
    public static void main(String [] args) {
        IMessage msg = new MessageImpl() ;
        msg.fun() ;// 直接调用在接口类中定义的方法
    }
}

 

上例代码使用static方法定义,由此可以直接通过类调用方法,则不在实例化接口则可以调用。

~~~~~~~~

 

 ###

总结:

   接口中default或static方法定义是为了避免子类重复的实现同样的代码

  接口的使用还应以使用抽象方法为主

 

以上是关于JDK1.8 —— 接口定义增强的主要内容,如果未能解决你的问题,请参考以下文章

jdk1.8新特性之接口default方法

jdk1.8新特性之lambda表达式

JDK1.8新特性

jdk1.7和jdk1.8区别

JDK1.8新特性之--函数式接口

jdk1.8中的函数式接口