JDK1.8的接口新特性

JDK1.8的接口新特性

JDK7及其之前

1、接口的变量都是public final static 全局静态常量,无变化。

2、接口中都是抽象abstract方法,不能有static方法(因为abstract和static、final、private不能共存)



JDK1.8及其之后

1、接口中可以添加抽象方法(static),实现类不能重写,只能通过接口名调用。

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

3、接口中可以添加非抽象方法(default),实现列可以重写,只能通过对象名来调用

4、实现类可以直接使用default方法,可以重写default,但是必须去掉default。

5、上级接口中default方法的调用:MyInterface.super.method2()



提供非抽象方法的目的

1、为了解决实现该接口的子类代码重复问题

2、为了既有的的成千上万的Java类库增加的新功能,且不必对这些类重新进行设计。
public interface MyInterface {
    public static final double PI = 3.14;
    public abstract void method1();
    public static void method2(){
        System.out.println("JDK1.8中的非抽象方法有两种,一种是static的");
    }
    public default void method3(){
        System.out.println("JDK1.8中的非抽象方法有两种,一种是default的");
    }

    public static void main(String[] args) {
        MyInterface.method2();
    }
}
public class MyClass implements MyInterface{

    @Override
    public void method1() {
        System.out.println("接口中的抽象方法,子类必须实现");
    }

    @Override
    public void method3() {
        MyInterface.method2();
        MyInterface.super.method3();
        System.out.println("重写接口中default方法,须将default去掉");
    }

    public static void main(String[] args) {
        MyInterface mi = new MyClass();
        mi.method1();
        MyInterface.method2();
        mi.method3();
    }
}

运行代码如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值