如何实现接口 java
实现接口的基本语法
在Java中,使用interface关键字定义接口,通过implements关键字让类实现接口。接口默认所有方法为public abstract(可省略),属性为public static final。
// 定义接口
interface MyInterface {
void method1();
String method2(int param);
}
// 实现接口
class MyClass implements MyInterface {
@Override
public void method1() {
System.out.println("Implemented method1");
}
@Override
public String method2(int param) {
return "Value: " + param;
}
}
接口的默认方法和静态方法
Java 8+允许接口包含默认实现(default方法)和静态方法(static方法),前者可以被实现类直接使用或重写,后者通过接口名调用。
interface AdvancedInterface {
// 抽象方法
void abstractMethod();
// 默认方法
default void defaultMethod() {
System.out.println("Default implementation");
}
// 静态方法
static void staticMethod() {
System.out.println("Static method");
}
}
多接口实现与冲突解决
一个类可以实现多个接口。当多个接口存在同名默认方法时,实现类必须重写该方法以避免冲突,可通过InterfaceName.super.method()调用特定接口的默认实现。
interface InterfaceA {
default void show() {
System.out.println("Interface A");
}
}
interface InterfaceB {
default void show() {
System.out.println("Interface B");
}
}
class MultiImpl implements InterfaceA, InterfaceB {
@Override
public void show() {
// 显式选择调用InterfaceA的实现
InterfaceA.super.show();
}
}
接口继承
接口可以继承其他接口(支持多重继承),子接口会继承父接口的所有抽象方法和默认方法。
interface Parent {
void parentMethod();
}
interface Child extends Parent {
void childMethod();
}
class ImplClass implements Child {
@Override
public void parentMethod() { /* 实现 */ }
@Override
public void childMethod() { /* 实现 */ }
}
标记接口与函数式接口
标记接口(如Serializable)不包含任何方法,仅用于标识类特性。函数式接口(@FunctionalInterface)仅包含一个抽象方法,可用于Lambda表达式。
@FunctionalInterface
interface Calculator {
int calculate(int a, int b);
}
// Lambda实现
Calculator add = (a, b) -> a + b;
System.out.println(add.calculate(2, 3)); // 输出5






