接口的默认方法解决接口升级问题

建议在看之前可以先看看接口那篇博客,如果是大神,忽略这句话~~

JDK8中为什么新添加了接口默认方法?
  • 以前创建了一个接口,并且已经被大量的类实现。
  • 如果需要再扩充这个接口的功能加新的方法,就会导致所有的实现类需要覆盖重写这个方法。
  • 如果在接口中使用默认方法就不会有这个问题。
  • 所以从 JDK8 开始新加了接口默认方法,便于接口方法的扩展。
接口升级问题:以前创建了一个接口,这个接口中的抽象方法比较少,现在需要向接口中添加更多的抽象方法。

格式:public default 返回值类型 方法名称 (参数列表){
}

接口
public interface MyInterfaceDefault {
    public abstract void method1();

    public default void newmethod(){//新添加的默认方法
        System.out.println("这是接口升级中添加的新方法");
    }
}

实现类1
public class MyInterfaceDefaultA implements MyInterfaceDefault {
    @Override
    public void method1() {
        System.out.println("AAA");
    }
}

实现类2
public class MyInterfaceDefaultB implements MyInterfaceDefault {
    @Override
    public void method1() {
        System.out.println("BBB");
    }
}

实现类对象
public class InterfaceDefaultMain {
    public static void main(String[] args) {
        MyInterfaceDefaultA a = new MyInterfaceDefaultA();
        MyInterfaceDefaultB b = new MyInterfaceDefaultB();
        a.method1();
        b.method1();
        a.newmethod();//这是方法升级中添加的新方法
    }
}
  • 先看接口中,如果想向接口中添加新的方法,就添加默认方法,添加默认方法后所有的实现类不用改动,但在实现类对象中仍然可以通过继承调用。
  • 如果没有接口默认方法,那么在接口中就只能定义抽象方法了,那所有的实现类都需要添加覆盖重写的抽象类方法,就太麻烦了。
    注意:默认方法也可以再实现类中默认重写。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值