java如何实现接口
实现接口的基本语法
在Java中,使用implements关键字实现接口。一个类可以实现多个接口,接口之间用逗号分隔。接口中的方法必须全部被实现(除非是抽象类),且方法的访问修饰符必须为public。
interface MyInterface {
void method1();
String method2(int param);
}
class MyClass implements MyInterface {
@Override
public void method1() {
System.out.println("Implementation of method1");
}
@Override
public String method2(int param) {
return "Implementation of method2 with param: " + param;
}
}
默认方法和静态方法
Java 8开始,接口可以包含默认方法(default修饰)和静态方法(static修饰)。默认方法可以直接被实现类继承,而静态方法必须通过接口名调用。
interface AdvancedInterface {
default void defaultMethod() {
System.out.println("Default method implementation");
}
static void staticMethod() {
System.out.println("Static method in interface");
}
}
class MyAdvancedClass implements AdvancedInterface {
// 默认方法可不重写
}
// 调用静态方法
AdvancedInterface.staticMethod();
多接口实现冲突处理
当实现多个接口且存在同名默认方法时,必须显式解决冲突,否则会编译错误。可以通过重写方法并指定调用哪个接口的默认方法。
interface InterfaceA {
default void conflict() {
System.out.println("Interface A");
}
}
interface InterfaceB {
default void conflict() {
System.out.println("Interface B");
}
}
class ConflictResolver implements InterfaceA, InterfaceB {
@Override
public void conflict() {
InterfaceA.super.conflict(); // 显式选择InterfaceA的实现
}
}
标记接口的使用
标记接口(如Serializable)是一种没有方法的接口,仅用于标识类的特性。实现此类接口仅需声明,无需实现方法。
class MySerializableClass implements Serializable {
// 无需实现任何方法
}
函数式接口与Lambda
若接口仅包含一个抽象方法(函数式接口),可通过Lambda表达式简化实现。常见例子如Runnable、Comparator。

Runnable task = () -> System.out.println("Lambda implementation");
new Thread(task).start();






