如何实现接口 java
定义接口
在Java中,接口通过interface关键字定义,仅包含方法签名和常量(默认public static final)。接口不能包含实例字段或具体方法实现(Java 8后允许default和static方法)。
public interface Animal {
void eat(); // 抽象方法
String getType(); // 抽象方法
}
实现接口
类使用implements关键字实现接口,必须重写所有抽象方法(除非是抽象类)。一个类可实现多个接口。
public class Dog implements Animal {
@Override
public void eat() {
System.out.println("Dog eats bones");
}
@Override
public String getType() {
return "Mammal";
}
}
默认方法和静态方法
Java 8允许接口包含default方法(提供默认实现)和static方法(通过接口名调用)。

public interface Vehicle {
void start(); // 抽象方法
default void honk() { // 默认方法
System.out.println("Beep beep!");
}
static boolean isElectric(int batteryLevel) { // 静态方法
return batteryLevel > 0;
}
}
多接口实现
类可实现多个接口,解决多继承问题。若多个接口有相同默认方法,需在类中显式重写。
public class SmartCar implements Vehicle, ElectricDevice {
@Override
public void start() {
System.out.println("Starting with AI");
}
@Override
public void honk() { // 重写冲突的默认方法
Vehicle.super.honk(); // 显式选择调用哪个接口的默认方法
}
}
接口继承
接口可继承其他接口,形成层次结构。子接口会继承父接口的所有抽象方法。

public interface ElectricVehicle extends Vehicle, ElectricDevice {
void charge(); // 新增抽象方法
}
标记接口
无任何方法的接口称为标记接口(如Serializable),用于标识类的特性。
public class Data implements Serializable {
// 类内容
}
函数式接口
仅包含一个抽象方法的接口(可含default或static方法),可用Lambda表达式实现。
@FunctionalInterface
public interface Calculator {
int calculate(int a, int b);
}
// 使用Lambda
Calculator add = (a, b) -> a + b;
System.out.println(add.calculate(2, 3)); // 输出5






