CoreJava 接口
接口
一、概念
接口是一组规范,使用者和实现者共同遵守的规范
二、语法
-
接口的声明:访问修饰符(public/default) interface 接口名{}
public interface Light{ } -
接口中的属性:接口中的属性都是公开静态最终的常量,即public static final
-
接口中的方法:接口中的方法都是公开抽象的方法,即public abstract
-
接口中没有构造方法
-
接口中的修饰符可以缺省,但是子类覆盖方法的时候,必须声明为public
-
使用接口的关键字是 实现(implements)
interface Light{ void shine(); } class GreenLight implements Light{ @Override public void shine() { } }
三、特点
- 接口中属性和方法的访问修饰符都是默认的,不可更改的
- 接口中没有构造方法
- 接口不能创建对象,但是可以声明引用(多态)
- 接口编译之后会生成.class文件,但接口不是类
四、使用
-
接口与接口之间的使用:
-
接口与接口之间使用继承关系,即使用extends关键字
-
接口之间可以多继承
interface IA{ void m1(); } interface IB{ void m2(); } interface IC extends IA,IB{ }
-
-
接口与类之间的使用:
-
一个类可以实现多个接口
-
需要将多个接口中所有的方法都进行实现,缺一不可
interface IA{ void m1(); } interface IB{ void m2(); } class CA implements IA,IB{ @Override public void m1() { } @Override public void m2() { } }
-
-
继承和实现:
一个类可以继承一个父类的同时实现多个接口interface IA{ void m1(); } interface IB{ void m2(); } class Super{} class Sub extends Super implements IA,IB{ @Override public void m1() { } @Override public void m2() { } }
五、强制类型转换
- 强制类型转换中,如果一方为接口类型引用,那么编译一定通过
- 运行是否通过:
- 转换双方的类型匹配,运行通过
- 转换双方类型不匹配,类型转换异常(java.lang.ClassCastException)
六、接口的作用
- 扩充子类功能:将主要的功能定义在父类中,将次要的功能定义在接口中
- 解耦合:
- 通过接口将使用者和实现者分离
- 通过多态将模块间的关系弱化
七、接口的回调
- 概念:作为接口的实现者,实现的接口之后无法直观的看到接口何时何地被调用
- 意义:体现了协同开发的工作模式,作为接口的实现者只需关注实现部分的代码,不需要关心是否被使用,体现了各司其职的工作方式
| 抽象类 | 接口 | |
|---|---|---|
| 关键字 | class | interface |
| 成员变量 | 没有要求 | 只能是public static final |
| 成员方法 | 没有要求 | 只能是public abstract |
| 构造方法 | 有 | 没有 |
| 与类之间的关系 | 单继承 | 多实现 |
| 与接口之间的关系 | 多实现 | 多继承 |
| JDK1.8 | 静态方法,默认方法 | |
| JDK1.9 | 私有方法 |
#Carrawayang written
浙公网安备 33010602011771号