基本介绍:接口就是给出一些没有实现的方法,封装到一起,到某个类要使用的时候,再根据具体情况把这些方法写出来
语法:interface 接口名{
属性;
方法;
}
class 类名 implement 接口名{
自己的属性;
自己的方法;
必须实现接口的抽象方法
}
在接口中,抽象方法可以省略abstract关键字。在接口中,抽象方法默认带有abstract关键字
接口注意事项和细节
- 接口不能被实例化
- 接口中所有的方法是public方法,接口中的抽象方法可以不用abstract修饰
- 一个普通类实现接口,就必须将该接口的所有方法都实现(重写接口中的方法)
- 抽象类实现接口 可以不用实现接口的方法(就是一个类在实现接口时,加上abstract修饰)
- 一个类可以同时实现多个接口
- 接口中的属性只能是 final的,而且是public static final修饰符。
比如:int a=1;实际上是public static final int a=1;(必须初始化)
- 接口中属性的访问形式:接口名.属性名
- 一个接口不能继承其他的类,但是可以继承多个别的接口(接口和接口可以有继承关系)
- 接口的修饰符只能是public和默认的,这点和类的修饰符是一样的、
实现接口VS继承类
接口和类解决问题的不同
继承的价值主要在于 | 解决代码的复用性和可维护性 |
类的价值主要在于 | 设计,设计好各种规范(方法),让其他类去实现这些方法 |
接口比继承更加灵活,继承是满足is - a的关系,而接口只需要满足like - a的关系
接口在一定程度上实现代码解耦【即 接口规范性+动态绑定】
接口的多态特性
1)多态参数
- 多态数组
接口存在多态传递现象(如果A接口继承了B接口,而C类实现了A接口,那么实际上就相当于C类也实现了B接口,这就是所谓的接口多态传递)