接口中定义静态方法和默认方法(JDK8)

Java8之前,接口里的方法要求全部是抽象方法。

 Java8(包含8)之后,以后允许在接口里定义默认方法和静态方法。

JDK8新特性——默认方法

        Java8及以上新版本,允许给接口添加一个非抽象的方法实现,只需要使用default关键字即可,这个特征又叫做默认方法(也称为扩展方法)。

        默认方法和抽象方法的区别是抽象方法必须要被实现,默认方法不是,作为替代方式,接口可以提供默认方法的实现,使用这个接口的实现类都可以得到默认方法。

public class Test{
    public static void main(String[] args){
        A a = new Test_A();
        a.moren();
    }
}

interface A{
    default void moren(){
        System.out.println("我是接口A中的默认方法");
    }
}

class Test_A implements A{
    @Override
    public void moren(){
        System.out.println(Test_A_moren);
    }
}

JDK8新特性——静态方法

        Java8以后,我们也可以在接口中直接定义静态方法的实现。这个静态方法直接从属于接口(接口也是类,一种特殊的类),可以通过接口名调用。

        如果子类中定义了相同名字的静态方法,那就是完全不同的方法了,直接从属于子类,可以通过子类名直接调用。

public class Test{
    public static void main(String[] args){
        A.staticMethod();
        Test_A_staticMethod();
    }
}

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

class Test_A implements A{
    public static void staticMethod(){
        System.out.println("Test_A.staticMethod");
    }
}

静态方法和默认方法:

        本接口的默认方法中可以调用静态方法

public class Test{
    public static void main(String[] args){
        A a = new Test_A();
        a.moren();
    }
}

interface A{
    public static void staticMethod(){
        System.out.println("A.staticMethod");
    }
    public default void moren(){
        staticMethod();
        System.out.println("A.moren");
    }
}

class Test_A implements A{
    public static void staticMethod(){
        System.out.println("Test_A.staticMethod");
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值