栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JDK8中接口新增的默认方法和静态方法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JDK8中接口新增的默认方法和静态方法

一、接口中的默认方法

在jdk8之前,在接口interface中是不能写默认方法的,都只能是抽象方法,当这个接口有多个实现类的时候,在接口中新增一个抽象方法,则每个实现类都要实现该方法,不利于扩展。

而默认方法可以写在接口中,并且有方法体,不用每个实现类都去实现,实现类可以直接调用或者重写:
1.接口中默认方法使用方式一:实现类直接调用:

class Defaultfun {
    public static void main(String[] args) {
        AA aa = new AA();
        aa.test01();
    }

}

interface interfaceDefault {

    public default void test01() {
        System.out.println("我是接口中的默认方法。。。");
    }
    ;

}

class AA implements interfaceDefault {

}

运行结果如下:

我是接口中的默认方法。。。

2.接口中默认方法使用方式二:重写
当默认方法觉得默认方法不太行的时候也可以去重写,自己实现:

class Defaultfun {
    public static void main(String[] args) {
//        AA aa = new AA();
//        aa.test01();
        BB bb = new BB();
        bb.test01();
    }

}

interface interfaceDefault {

    public default void test01() {
        System.out.println("我是接口中的默认方法。。。");
    }
    ;

}

class BB implements interfaceDefault {

    @Override
    public void test01() {
        System.out.println("BB 类实现接口中的默认方法");
    }
}
二、接口中的静态方法

将默认方法的修饰符defualt改为statis即可

public class interfaceStatisFun {
    public static void main(String[] args) {
    // 接口中的静态方法直接使用接口名调用即可,无法重写和实现类调用的
        AAA.test01();
    }
}


interface AAA {
    public static void test01(){
        System.out.println("我是接口中的静态方法");
    }
}

class BBB implements AAA{

}
三、接口中的默认方法和静态方法的比较

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

四、如何选择写默认方法还是静态方法呢?

如果这个方法需要被继承,或者实现,则写成默认方法,如果接口中的方法不需要继承或重写则使用静态方法。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1003456.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号