美文网首页
jdk8接口新增方法

jdk8接口新增方法

作者: 牧心musing | 来源:发表于2021-02-23 09:59 被阅读0次

    在jdk8之前,接口中只有抽象方法。

    1、接口引入默认方法

    1.1 原因

    一个接口如Map,其有几十个接口的实现。
    如果有一天,我们需要为Map接口添加一个抽象方法,那么我们所有的实现类都需要去实现这个方法,其工程量十分巨大。
    为此,在JDK8中,为接口新增了默认方法。

    接口中的默认方法,实现类不必重写,可以直接使用,实现类也可以根据需要重写。这就方便了接口的拓展。

    格式:在默认方法前面加上default修饰

    interface A{
        public default void test(){
            System.out.println("interface aa");
        }
    }
    

    1.2 使用方法

    1. 实现类直接使用


      image.png
    2. 实现类重写默认方法


      image.png

    2、接口引入静态方法

    目的:方便接口扩展

    格式:在默认方法前面加上static修饰

    interface A{
        public static void test(){
            System.out.println("interface aa");
        }
    }
    

    使用方法

    public class Demo02StaticFunction {
        public static void main(String[] args){
            E e = new E();
    //        e.test() 实现类无法直接调用静态方法
            // 通过接口直接调用
            D.test();
    
        }
    }
    
    interface D{
        public static void test(){
            System.out.println("D static function");
        }
    }
    
    class E implements D{
    
    }
    

    3. 接口默认方法和静态方法的区别

    1、默认方法通过实例调用,静态方法通过接口名调用
    2、默认方法可以被继承,实现类可以直接使用接口默认方法,也可以重写默认方法
    3、静态方法不能被继承,实现类不能重写接口静态方法,只能使用接口名调用。

    如果某个方法需要被实现类继承或重写,则使用默认方法,如果不需要继承就是用静态方法。

    相关文章

      网友评论

          本文标题:jdk8接口新增方法

          本文链接:https://www.haomeiwen.com/subject/lsmbtltx.html