接口(interface)(简单版)

接口

什么是接口?

  • 微观概念:
  • 接口是一种能力和约定。
  • 接口的定义:代表了某种能力。
  • 方法的定义:能力的具体要求。
  • 经验:Java为单继承,当父类的方法种类无法满足子类需求时,可实现接口扩充子类能力。
  • 接口支持多实现,可为类扩充多种能力。
  • 举个粒子:在前面已经理解了什么是继承,和继承的优缺点,而接口就是来扩充继承的缺点的,继承只能是单继承,就如每个人都只有一个亲生父母,然而接口比较开放,接口可以让实现他的类能实现多个接口,实现接口的类就能有更多的特征和能力,就可以实现类的扩充。既然接口是继承的一种扩充版,约定也就更加强,很多能力和作用都是和抽象类大同小异,接下来让我们慢慢的了解接口吧!

接口的设计

在公司设计接口的人往往都是项目经理或者架构师,因为接口的设计他需要对整个软件的架构和需求有更深层的理解,刚开始工作都是使用别人设计好的接口。

定义

Java中的接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征,没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(能力)。

接口特点

  1. 它定义的变量默认是public static final 常量。
  2. 它定义的方法默认是public abstract 抽象方法。
  3. 类和接口是一种实现的关系,关键字是implements,一个类可以同时实现多个接口。
  4. 一个类中实现的接口(可以是多个接口),就必须覆盖接口所有的方法。不然该类就必须声明为抽象的。
  5. 不能用接口来创建对象,接口没有构造方法。
  6. 一个接口可以继承多个接口。
  7. 接口也是生成.class文件。
  8. 一个类可以同时继承一个类和实现多个接口。

接口的语法

  • 接口相当于特殊的抽象类,定义方式组成部分与抽象类类似。
  • 使用interface关键字定义接口。
  • 没有构造方法,不能创建对象。
  • 只能定义:公开静态常量、公开抽象方法。
  • 实现接口(引用接口)使用implements关键字。(实现接口相当于继承,一样可以使用多态)

接口的规范

  • 任何类在实现接口时,必须实现接口中所有的抽象方法,否则此类为抽象类。
  • 实现接口中的抽象方法时,访问修饰符必须是public。

接口的引用

  • 同父类一样,接口也可声明为引用,并指向实现类对象。
  • 注意:
    (1)仅可调用接口中所声明的方法,不可调用实现类中的独有的方法。(和继承的向上转型一样)
    (2)可强转回实现类本身类型,进行独有方法调用。(和继承的向下转型一样)
    (3)特殊:通过接口可调用Object中的公开方法。

接口的多态

  1. 多种不同类型的引用指向同一个对象时,表示看待对象的视角不同。
  2. 不同引用所能看到的对象范围不同,不同调用自身类型中所声明的部分。

接口与抽象类的区别

  1. 接口中不能有具体的实现,但抽象类可以。
  2. 一个类要实现一个接口必须实现其所有的方法,而抽象类不必。
  3. 通过接口可以实现多继承,而抽象类做不到。
  4. 接口不能有构造方法,而抽象类可以。
  5. 实体类与接口之间只有实现关系,而实体类与抽象类只有继承关系,抽象类与接口之间只有实现关系。
  6. 接口中的方法默认都是公开抽象方法,属性默认都是公开静态常量,而抽象类不是。

常见关系

  • 类与类
    (1)单继承
    (2)extends 父类名称
  • 类与接口
    (1)多实现
    (2)implements 接口名称1,接口名称2,接口名称n…
  • 接口与接口
    (1)多继承
    (2)extends 父接口1,父接口2,父接口n…

常量接口、标记接口

  • 常量接口将多个常量用于表示状态或者固定值的变量,以静态常量的形式定义在接口中统一管理,提高代码可读性
  • 标记接口中没有包含任意成员,仅仅用作标记,如Serializable、Cloneable等

什么是接口?

宏观概念:接口是一种标准。
在这里插入图片描述
回调原理

  • 接口回调:先有接口的使用者,后有接口的实现者。
  • 如图
    在这里插入图片描述
    过程
    在Java代码中实现类的顺序是①→②→③→④,上面的→表示的是引用关系。
    我们要先创建接口(如USB)→再创建工具(如电脑)电脑类中有应用USB的声明,声明了3个变量来表示接口的实现者→再创建3个接口的实现者也就是引用接口implements,有U盘、USB台灯、USB数据线→接着用工具的调用者即创建一个(测试类)调用电脑的类,在main()中,声明电脑类,此时可以用电脑类调用电脑类里面的方法,一个是电脑正常工作、一个是引用USB的工作,因为电脑类中提前用接口声明了3个USB变量,此时在工具的调用者类中使用多态USB声明变量实现对应的3个接口的实现者,再通过工具对象给3个USB声明的变量分别赋值即可。

接口的好处

  1. 程序的耦合度降低
  2. 更自然的使用多态
  3. 设计与实现完全分离
  4. 更容易搭建程序框架
  5. 更容易更换具体实现

结束语

光头强们,拜了拜咧~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你不懂、、、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值