接口interface关键字详解

1、概述       

接口技术用于描述类具有什么功能,但并不给出具体实现,当某个类要使用接口时,再去实现接口中的这些方法。类需要遵从接口中描述的统一规则进行定义,所以,接口是对外提供的一组规则,标准。

2、定义 

定义接口要用到关键字interface,格式如下 : 

 interface 接口名 {

} 

类和接口之间不再是继承,而是实现关系,用implements关键字表示。

 class 类名 implements 接口名 {
 }

3、特点      

3.1、公有静态常量

 接口中没有成员变量,只有公有静态常量,即默认情况下属性前都会有public static final 这三个关键字修饰。如下 : 
public static final 数据类型 常量名 = 常量值; 

当时,我们说,final修饰的属性必须进行初始化,而对于公有静态常量,初始化的途径只有两条1)、定义时 2)、静态代码块中。

但是很遗憾,接口中不允许存在代码块,而且接口没有构造方法。因此,这就要求我们在接口中定义公有静态常量时,必须在定义时就赋初值。否则IDEA报错。 IDEA对于i变量前的三个关键字均作了灰色处理,表明这三个修饰符是默认的,而可通过接口名来调用i变量也体现出static关键字的存在。

3.2、默认方法、抽象方法、静态方法

在JDK7.0版本及其之前版本中,接口中仅支持公有的抽象方法:
public abstract 返回值类型 方法名();  
事实上,接口中的方法默认就是公有抽象方法,因此在接口中定义抽象方法时,可以省略掉abstract关键字。
 从JDK8.0开始,接口中可以由默认方法和静态方法:
 默认方法

public default 返回值类型 方法名() {
}

静态方法

public static 返回值类型 方法名() {
 }

需要注意的是,想定义默认方法必须在前面添加default关键字,因为接口中的方法如果你什么都不写,默认是公有的抽象的方法。默认方法可以有方法体,且不需要实现类去实现,其实就是我们平时见到的普通的成员方法。但是默认方法是可以被实现类重写的。default关键字只能在接口中使用。就算实现类要重写默认方法,实现类中重写后的方法也不能添加default修饰符,不然IDEA报错。

接口无构造方法,接口不能被实例化 ,接口的子类(实现类) 可以是抽象类,也可以是普通类,对于抽象实现类,可以不用实现接口的所有方法,因为抽象类本身容许存在抽象方法,语法上是通过的,对于普通实现类,要求实现接口的所有方法。

4、接口继承关系的特点 : 

1)类和接口之间的关系 : 类与接口是实现关系,支持“多实现”,即一个类可实现多个接口。
2)接口与接口之间的关系 : 接口与接口是继承关系,java 支持接口的多继承,即一个接口可以同时继承多个接口,格式如下 :接口 extends 接口1,接口2,接口3...
3)继承和实现的区别 : 
继承体现的是“is a”的关系,父类中定义共性内容。
实现体现的是“like a”的关系,父接口中定义扩展内容。

PS : 接口的“实现”可以看作是Java中对“单继承机制”的一个补充完善。接口可以在一定程度上实现代码解耦(接口规范性 + 动态绑定)。总的来看,接口比继承更为灵活。

  • 22
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

吹老师个人app编程教学

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

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

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

打赏作者

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

抵扣说明:

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

余额充值