今天复习一下Java的基础知识,之前对于接口只有一个比较笼统的概念,经过一晚上的梳理,整理如下:它一种抽象类型,用于定义一组方法和常量。是Java多态性的重要体现。
- 定义接口
- 使用 interface 关键字来定义,例如 public interface MyInterface{} 。接口中的成员变量默认是 public static final 的,所以一般都是大写字母命名,定义时就必须赋值,比如 int MAX_VALUE = 100; 。
- 方法默认是 public abstract ,在接口里只写方法签名,如 void methodName(); 。
- 接口的实现
- 一个类通过 implements 关键字实现接口,如 class MyClass implements MyInterface 。如果这个类没有实现接口中的所有方法,那么这个类必须被定义为抽象类。
- 实现接口的类要实现接口中定义的所有方法,而且方法的可见性必须是 public (因为接口中的方法默认是 public )。
- 接口的作用
- 实现多态:可以有多个类实现同一个接口,这些类的对象都可以被当作接口类型来使用。例如有一个 Drawable 接口, Circle 类和 Rectangle 类都实现了它,当有一个方法参数是 Drawable 类型时,就可以传入 Circle 或者 Rectangle 的对象,实现不同的绘制行为。
- 定义规范:接口就像是一个契约,规定了实现它的类必须要做什么。比如 java.util.List 接口定义了列表操作的规范, ArrayList 和 LinkedList 都实现这个接口,保证了它们都能进行诸如添加、删除元素等操作。
- 解耦代码:在大型项目中,接口可以降低类与类之间的耦合度。比如一个程序的模块A通过接口调用模块B的功能,只要模块B实现接口的功能不变,具体实现细节可以随意修改,而不会影响模块A的调用。