javaSE复习之——面向对象_接口

接口概述

  • 从狭义的角度讲就是指java中的interface
  • 从广义的角度讲对外提供规则的都是接口

特点:

  • a : 接口用关键字interface表示

1
interface 接口名 {}
  • b : 类实现接口用implements表示
1
class 类名 implements 接口名 {}
  • c : 接口不能实例化

    那么,接口如何实例化呢?

    答:按照多态的方式来实例化。

  • d : 接口的子类

    a : 可以是抽象类。但是意义不大。
    b : 可以是具体类。要重写接口中的所有抽象方法。(推荐方案)

  • 注意事项:

    1、接口中的成员变量默认都是常量,他会自动加public static final关键字,并且可以互相交换位置,新手平时都手动给出。

    2、接口中没有构造方法

    3、接口是干爹,不是亲爹,子类不能用super访问父类中的内容,子类默认继承object类

    4、接口中不能定义非抽象方法

    5、类与接口是实现关系而非继承关系(干爹)

    6、同一个类可以实现多个接口

    • 例子:

    class Deom implements InterA,InterB {}

    8、接口不能实现接口(implements),但是却可以继承(extends)

类 与 接口的关系

  • a : 类与类:

    继承关系,只能单继承,可以多层继承。

  • b : 类与接口:

    实现关系,可以单实现,也可以多实现。
    并且还可以在继承一个类的同时实现多个接口。

  • c : 接口与接口:

    继承关系,可以单继承,也可以多继承。

抽象类 与 接口的区别:

  • 抽象类:

    和普通的类差不多,只是可以定义抽象方法而已

  • 接口:

    成员变量:只可以常量
    成员方法:只可以抽象

设计理念区别(重要):

  • 抽象类:

    定义的是该继承体系的共性功能

    • 例:每个学生都需要学习
  • 接口: 定义的是该继承体系的扩展性功能

    • 例:每个学生在学校的学习方式都不一样,这样就需要扩展
  • 设计理念区别:

    接口是对动作的抽象,抽象类是对根源的抽象

    抽象类表示的是:这个对象是什么

    接口表示的是:这个对象能做什么

    • 比如:男人,女人,这两个类,他们的抽象类是人。
      说明:他们都是人,他们的根源就是

    • 又比如:人可以吃东西,狗也可以吃东西,可以把“吃东西”定义成一个接口,然后让这些类去实现它。
      说明:他们都可以吃东西,他们的根源是不同的,但是做的动作却相同的。

结论

  • 在高级语言上,一个类只能继承一个类(抽象类)(正如人不可能同时是生物和非生物),但是可以实现多个接口(吃饭接口、走路接口)。
  • 当关注一个事物的本质的时候,用抽象类
  • 当关注一个要做的动作的时候,用接口