如何使用java接口
理解接口的基本概念
接口(Interface)是Java中一种完全抽象的类,用于定义一组方法规范而不提供具体实现。接口通过interface关键字声明,所有方法默认是public abstract的。类通过implements关键字实现接口,并必须重写接口中的所有方法(除非是抽象类)。
定义接口
接口可以包含抽象方法、默认方法(Java 8+)、静态方法(Java 8+)和常量(默认public static final)。以下是一个简单接口的定义示例:
public interface Animal {
void eat(); // 抽象方法
default void sleep() { // 默认方法
System.out.println("Animal is sleeping");
}
static void breathe() { // 静态方法
System.out.println("Animal breathes");
}
}
实现接口
类通过implements实现接口,必须重写所有抽象方法。一个类可以实现多个接口(多继承):
public class Dog implements Animal {
@Override
public void eat() {
System.out.println("Dog eats bones");
}
}
接口的多继承
Java不支持类的多继承,但支持接口的多继承。接口可以继承其他接口:

public interface Pet {
void play();
}
public interface DomesticAnimal extends Animal, Pet {
void guardHouse();
}
public class Labrador implements DomesticAnimal {
@Override
public void eat() { /* 实现 */ }
@Override
public void play() { /* 实现 */ }
@Override
public void guardHouse() { /* 实现 */ }
}
默认方法与静态方法
- 默认方法:允许接口提供默认实现,避免破坏已有代码。实现类可选择重写或直接使用。
- 静态方法:属于接口本身,通过接口名直接调用(如
Animal.breathe())。
接口与抽象类的区别
- 接口:支持多继承,仅定义规范,无构造方法,成员变量默认为常量。
- 抽象类:单继承,可包含构造方法和非抽象方法,成员变量可以是普通属性。
实际应用场景
- 解耦:定义标准规范(如JDBC的
Connection接口)。 - 回调机制:通过接口实现事件监听(如
Runnable接口)。 - 策略模式:通过不同实现类动态切换行为。
示例:策略模式
interface PaymentStrategy {
void pay(int amount);
}
class CreditCardPayment implements PaymentStrategy {
@Override
public void pay(int amount) {
System.out.println("Paid via Credit Card: " + amount);
}
}
class ShoppingCart {
private PaymentStrategy paymentStrategy;
public void setPaymentStrategy(PaymentStrategy strategy) {
this.paymentStrategy = strategy;
}
public void checkout(int amount) {
paymentStrategy.pay(amount);
}
}
通过接口,可以灵活切换支付方式(如setPaymentStrategy(new CreditCardPayment())),无需修改核心逻辑。






