接口不是类,而是对类的一组需求描述, 描述类具有什么功能,不必给出具体的实现,这些类要遵从接口描述的统一格式进行定义。 关键字是interface
接口的特性
- 接口不是类,不能实例化,
- 抽象类也不能实例化
- 可以声明接口类型的变量
- 抽象类也能声明抽象类型的变量
- 这个变量必须引用实现了这个接口的对象
- 抽象类变量必须引用继承了这个抽象类的对象
接口和抽象类的区别
抽象类 | 接口 | |
---|---|---|
关键字 | abstract class | interface |
继承 | 只能继承一个抽象类 | 可以实现多个接口 |
域 | 可以有实例域的 | 肯定不能有实例域 |
方法 | 可以有普通方法 | 只能有静态,default 抽象方法 |
构造函数 | 可以有构造函数 | 没有 |
目的 | 为了重用 | 解耦合 |
一个类可以实现(implement)—个或多个接口, 并在需要接口的地方, 随时使用实现了相应接口的对象。
接口中的所有方法自动地属于 public。 因此, 在接口中声明方法时, 不必提供关键字public
为了让类实现一个接口, 通常需要下面两个步骤:
1 ) 将类声明为实现给定的接口。
2 ) 对接口中的所有方法进行定义。
要将类声明为实现某个接口, 需要使用关键字 implements
//接口方法只能有定义,不能有实现
public interface Student {
final int X = 10;
float getScore(int studentNo);
int getStudentAge(int StudentNo)