java接口的作用和意义_Java接口的作用与意义

接口

1.接口的特点

首先看下面的这个抽象类代码:

2725dcd84edf92c593bc9d644cd80fbc.png

抽象类代码中变量全为常量,方法全是抽象方法,这样的形式,我们可以将它们定义为接口类,书写方式如下:

a5f36d74b59eefb7642ca77f42debbc8.png

接口的语法为:

interface接口名{

常量或方法

}

接口特点:

所有的属性都是公开静态常量所有的方法都是公开抽象方法没有构造方法,类中即使不写也有构造方法,但是接口不能创建对象,所以没有构造方法接口只能声明引用

基于接口特点,在定义接口时实际上需要在定义常量时需要写public static final、定义抽象类时需要写public abstract,但因为在定义接口名称时声明了interface的接口,所有在实际书写过程中可以省略,如下图:

0680c126b1f09201e71f4629fac0ed75.png

我们可以把接口暂时理解为一种特殊的抽象类,所以类的特征也同样适用于接口:

一个java文件中可以定义多个接口,但是最多只能有一个公开接口公开接口的接口名必须和java文件的文件名完全相同一个接口编译后会生成一个class文件

2.类与接口的关系

b4c333b150d3b144ff8ab23f863bd27c.png

定义一个实现类实现AI接口,因为接口中都是抽象方法,所以在implements时需要实现抽象方法,否则不能编译。

一个类实现接口,如果自己不想成为抽象类,就必须实现接口中所有声明的方法。

257b2bc68b609042054dc5e94e847024.png

注意:

接口中的方法都是公开的方法,实现类中的方法也必须是公开的。接口中可以不写public修饰符,但在实现类中需要写public

接口可以声明引用,可以声明方法,可以由实现类实现方法。抽象类能使用的多态,接口一样可以使用。

3.接口的多继承

接口可以声明引用,可以声明方法,可以由实现类实现方法。抽象类能使用的多态,接口一样可以使用。那么为什么还要写接口呢?

之前说过Java是单继承语言,但是有接口就可以多继承,解决了继承多个抽象类的问题。如果把接口视为抽象类,则Java实现了多继承。

实现多继承书写方式如下:

97e53c686d641226bb928b16f846dd94.png

虽然Java使用接口实现了所谓的多继承,但是没有影响类和类之间单继承的特性。Java的单继承指的是类之间的继承关系,不包括接口。

为什么Java不能使用多继承呢?

假设一个场景,两个父类中都存在同名方法test,如果使用多继承,子类在调用test方法时不知道应该调用哪个父类中的test方法。

接口为什么能多继承(多实现)?

因为接口中是抽象类,在实现类中可以覆盖接口中同名的方法,实现类不会出现同名方法。

注意:接口不是用来多继承的,它更多的目的是定制一个标准,实现解耦。

定义一个接口就是定义了一个标准,使用这个接口的类就是标准的使用者,实现了这个接口的类就是这个标准的实现者。接口的出现,把使用者和实现者之间的直接联系转化为间接联系,把强耦合转换为弱耦合,从而实现解耦的目的。

电脑就应用了解耦的功能,电脑需要鼠标,但是鼠标可能会坏,所以不能鼠标坏了就更换整个电脑,所以电脑对外提供了一个USB接口,鼠标的连接线只要符合USB接口的标准,就可以在电脑中使用,这就成功解决了电脑与鼠标的紧耦合。显示器、游戏手柄都是如此,只要通过USB接口连接,都可以与电脑交互。

b15f96f48fb016be5b1b046f1af01c36.png

72ffd8dbab9134a3084eb7548cba04aa.png

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值