接口(Interface)在Java中是一种引用类型,它是方法声明的集合。接口是完全抽象的,它只能包含抽象方法和静态常量,不能包含实现。接口是一种形式上的契约,任何实现了接口的类都必须实现接口中声明的所有方法。
如何定义接口
接口的定义使用interface
关键字,后面跟着接口名和接口体。接口体中可以包含常量定义和方法定义,但方法不能包含实现(即方法体)。
public interface MyInterface {
// 常量
public static final int SOME_CONSTANT = 1;
// 抽象方法
void doSomething();
}
如何实现接口
一个类通过关键字implements
来实现一个接口。这个类必须实现接口中的所有方法。
public class MyClass implements MyInterface {
@Override
public void doSomething() {
// 方法实现
}
}
接口的特性
- 多继承性:Java中的类只能继承一个父类,但可以实现多个接口,从而间接实现多继承。
- 解耦合:接口定义了一套规范,实现了接口的类遵循这套规范,调用者面向接口编程,可以降低模块间的耦合度。
- 灵活性:接口提供了一种形式的契约,使得实现接口的类在保持一定规范的同时,可以有不同的实现。
接口与抽象类的区别
- 接口中的方法默认是
public
的,而抽象类中的方法可以有不同的访问修饰符。 - 接口中只能定义静态常量,不能定义变量;抽象类中则可以定义变量。
- 一个类可以实现多个接口,但只能继承一个抽象类。
- 接口是一种更加松散的耦合,抽象类则相对紧密。
接口在Java编程中是一种非常重要的抽象类型,它提供了一种定义契约的方式,使得不同的类可以在保持一定规范的同时,拥有各自的实现,极大地提高了程序的灵活性和可维护性。