2023年5月19日星期五

接口和适配器

接口与抽象类的区别

抽象类着重于继承体系

  • 多用于父类当中,抽象共性方法
  • 表示一类事物

接口着重于方法的解决

  • 是一种规则,是对行为的抽象
  • 表示一种行为

接口的定义和使用

  • 接口用关键字interface来定义
    public interface 接口名 {}
  • 接口不能实例化
  • 接口和类之间是实现关系,通过implements关键字表示
    public class 类名 implements 接口名 {}
  • 接口的子类(实现类)
    • 要么重写接口中的所有抽象方法(一般用此法)
    • 要么是抽象类

ps:

  • 接口和类的实现关系,可以单实现,也可以多实现
    public class 类名 implements 接口名1,接口名2 {}
  • 实现类还可以在继承一个类的同时实现多个接口
    public class 类名 extends 父类 implements 接口名1,接口名2 {}

接口中成员的特点

  • 成员变量

    • 只能是常量
    • 默认修饰符:public static final
      • IDEA(我用的是IDEA)默认添加,不写也有
  • 构造方法

    • 没有
  • 成员方法

    • 只能是抽象方法
    • 默认修饰符:public abstract

ps:

  • JDK7以前:接口中只能定义抽象方法
  • JDK8的新特性:接口中可以定义有方法体的方法
  • JDK9的新特性:接口中可以定义私有方法

接口和类之间的关系

  • 类和类的关系
    继承关系,只能单继承,不能多继承,但是可以多层继承
  • 类和接口的关系
    实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口
  • 接口和接口的关系
    继承关系,可以单继承,也可以多继承

版本迭代

JDK8

  • 允许在接口中定义默认方法,需要使用关键字default修饰
    作用:解决接口升级问题

  • 接口中默认方法的定义格式

    • 格式:public default 返回值类型 方法名() {}
    • 范例:public default void show() {}
  • 默认方法的注意事项

    • 默认方法不是抽象方法,所以不强制被重写,重写的时候去掉default关键字
    • public可以省略,delault不能省略
    • 如果实现了多个接口,多个接口中存在相同名字的默认方法,子类就必须对该方法进行重写
  • 允许在接口中定义静态方法,需要用static修饰
  • 接口中静态方法的定义格式:
    • 格式:public static 返回值类型 方法名() {}
    • 范例:public static void show() {}
  • 静态方法的注意事项
    • 静态方法只能通过接口名调用,不能通过实现类名或者对象名调用
    • public可以省略,static不能省略

上面一大堆总结就是:
public abstract void 方法名();

  1. 抽象方法,必须被重写
    public default void 方法名() {}
  2. 默认方法,不强制被重写
    public static void 方法名() {}
  3. 静态方法,不能被重写,通过接口名调用
    private static void 方法名() {}
  4. 私有方法,不对外开放权限,只内部使用,用来存放重复代码

###JDK9

  • 允许在接口中定义私有方法
  • 接口中私有方法的定义格式:
    • 格式1:private 返回值类型 方法名() {}

    • 范例1:privete void show() {}

    • 格式2:private static 返回值类型 方法名() {}

    • 范例2:private static void method() {}

适配器

  • 当一个接口中抽象方法过多,但是我们只要使用其中一部分的时候,就可以用适配器设计模式

  • 书写步骤:

    1. 编写中间类XXXAdapter,实现对应的接口
    2. 对接口中的抽象方法进行空实现
    3. 让真正的实现类继承中间类,并重写需要用的方法
    4. 为了避免其他类创建适配器类的对象,中间的适配器类用abstract进行修饰
  • 小技巧:因为类只能单一继承,所以如果有多个“父类”接口,则全部给到XXXAdater去做一个中转就行了

没有评论:

发表评论

为你写诗

 竹意 赋竹几时诗意浓,风雪知我意朦胧 寒风凛冽吹竹叶,大雪纷飞映竹容 月下竹影摇清梦,雪中竹枝舞星穹 书篇小竹诉音避,愿留诗意在竹中 一潦西流水 甲辰 霜月 望 于沪