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方法定义是为了避免子类重复的实现同样的代码

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

 

posted @ 2019-05-25 23:40  Mirror王宇阳  阅读(192)  评论(0编辑  收藏  举报