Java接口升级

接口

随着Java版本的升级,接口中不仅能定义抽象方法还能定义其他的方法
可以定义方法:抽象方法、默认方法default、静态方法、私有方法,为了解决接口升级带来的问题
注意Java不同版本之间的兼容性!

1、接口升级问题

  • 多个实现类必须实现接口中的所有方法
  • 如果需要添加新功能(接口添加新的方法),就要改写所有实现类
  • 可以使用接口继承,但是兼容性有所下降
  • 桥接模式(抽象保留接口引用),也可以解决接口升级的问题。抽象a、a实现s、接口s。结构复杂性提高了

2、接口中的方法们

2.1、抽象方法
public abstract void methodName(){
    // 接口定义抽象方法,实现类 来实现
} 
methodName(){};  // 简写
2.2、默认方法

Java8中的新特性,实现类可以直接调用默认方法,也可以覆盖重写,是否调用、是否重写都是非必须的。可以向接口中添加默认方法,让新的实现类调用或重写,从而解决了接口升级的问题

public default int methodName(int a){
    // 有方法体
    // 返回值类型,参数列表
    // default不能省略
    // 也只有public可以省略
}
2.3、静态方法

Java9中的新特性。静态级别,使用接口名直接调用

public static void xxx(){
    // 接口名称直接调用,不能使用实现类对象调用
}
2.4、私有方法

冗余代码抽取

// 私有静态方法
private static void xxx(){
    // 多个静态方法中冗余代码抽取
}

// 私有默认
private void xxx(){
    // 多个默认方法冗余代码抽取
}

// 私有:接口内部使用,在默认方法、静态方法中调用
2.5、常量和枚举
// 枚举用例:项目里不同模块中配置个性化返回对象。
// 接口统一方法,返回枚举信息。
// 多个枚举实现同一个接口,面向接口编程,个性化配置,限制对象范围
public enum MyEnum implements xxx {

    SUCCESS(true,7777,"操作成功!"),
    FAIL(false,4444,"操作失败!");

    //操作是否成功
    boolean status;
    
    //操作代码
    int statusCode;

    //提示信息
    String message;

    private MyEnum(boolean status,int statusCode, String message){
        this.status = status;
        this.statusCode = statusCode;
        this.message = message;
    }
}
// 公共、实现类无关、final:不可变,必须加上final
public static final int MUN = 10;  

3、多实现与MRO

// 可以同时实现多个接口
// 继承优先于实现
// 父类中的默认方法优先于接口中的默认方法
// 避免父类和接口默认方法重名的问题
// 多接口同名方法:实现一就行了,方法本身只是约束作用

4、多态

// Java中多态较多体现在 面向接口编程,方法的覆盖重写也是多态的一种体现
// Python中多态的体现只有 方法重写
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值