抽象类和接口

抽象类

  • 在Java中采用abstract 关键字定义的类就是抽象类,采用abstract关键字定义的方法就是抽象方法

  • 抽象的方法只需在抽象类中,提供声明,不需要实现

  • 如果一个类中包含抽象方法,那么这个类必须定义成抽象类

  • 如果这个类是抽象的,那么这个类被子类继承,抽象方法必须被重写。如果在子类不重写该抽象方法,那么必须将此类再次声明为抽象类

  • 抽象类不能被实例化

  • 抽象类不能被final修饰

    被final修饰的类不能被继承,而抽象方法只能被子类实现抽象类中可以包含方法实现,可以将一些公共的代码放到抽象类中,另外在抽象类中可以定义一些抽象的方法,这样就会存在一个约束,而子类必须实现我们定义的方法

 

接口

接口我们可以看作是抽象类的一种特殊情况,在接口中只能定义抽象的方法和常量(完全抽象)

  • 接口的方法默认是 public abstract的,不能更改

  • 接口中的变量默认都是public static final,不能被更改,所以必须显示初始化

    注: 接口中的所有数据都是public 修饰的

  • 接口不能被实例化,接口中没有构造函数的概念

  • 接口之间可以继承,但是接口之间不能实现

  • 类和类之间的关系有单继承关系,那么类和接口之间的关系被称为实现关系。

    注:实现可以等同看作继承,实现对应的关键字是:implements,不是 extends

    • 接口中的方法只能通过类来实现,通过 implements 关键字

    • 一个类可以实现多个接口,用“,”隔开

    • 如果一个非抽象的类实现了接口,那么接口中所有的方法必须实现

    • 一类可以实现多个接口,接口和接口之间支持也是多继承的

    • java 中的规范:一个类若实现了一个接口,该类的名字一般写成:接口名 Impl

接口和抽象类的区别:

  1. 接口描述了方法的特征,不给出实现,一方面解决 java 的单继承问题,实现了强大的可接插性

  1. 抽象类提供了部分实现,抽象类是不能实例化的,抽象类的存在主要是可以把公共的代码移植到抽象类中

  1. 面向接口编程,而不要面向具体编程(面向抽象编程,而不要面向具体编程)

  1. 优先选择接口(因为继承抽象类后,此类将无法再继承,所以会丧失此类的灵活性)

 

 

posted @ 2021-03-16 16:02  扣扣M  阅读(65)  评论(0)    收藏  举报