抽象类与接口的关系

1. 抽象类和接口的区别

  • 类可以实现无限个接口,但只能从一个抽象类继承。
  • 抽象类中可以存在并实现非抽象方法,但接口里面的方法只能是public且没有实现的。
  • 抽象类的成员变量可以被不同的修饰符来修饰,但接口的成员变量只能是静态常量(static final)。
  • 抽象类是对象的抽象,接口是一种行为规范。



2. 抽象类和接口的使用注意事项

  • 在继承抽象类时,必须要实现抽象类中所有的抽象方法,且实现的方法必须与抽象方法签名完全一致,这和接口一致。
  • 抽象类的非抽象方法具有实际功能时,子类可以不必重写该方法,可以直接引用。当然根据继承的概念也可以重写该方法。
  • 而实现(implement)一个接口时,必须要实现接口中所定义的所有方法,不可缺漏一个。
  • 在实现接口时,我们也常写一个抽象类,来实现(implement)接口中的某些子类所需的通用方法,接着在编写各个子类时,即可继承该抽象类来使用,省去在每个都要实现通用的方法的困扰。



3. 接口的default`方法(JDK>=1.8)

在接口中,可以定义default方法。

interface Person {
    String getName();
    default void run() {
        System.out.println(getName() + " run");
    }
}

default方法的目的是,当我们需要给接口新增一个方法时,会涉及到修改全部子类

如果新增的是default方法,那么子类就不必全部修改,只需在需要重写的地方去重写新增的方法。

posted @ 2020-12-23 21:39  Cigar丶  阅读(315)  评论(0编辑  收藏  举报