java中实现接口必须用implements关键字并重写全部抽象方法,否则编译失败;可复用default方法;支持多接口实现,同名default方法需显式重写;单抽象方法接口可用lambda简化。

Java 中实现接口方法,核心是用 implements 关键字声明类与接口的关系,并提供接口中所有抽象方法的具体实现。这不是可选动作,而是编译强制要求——除非该类本身声明为 abstract。
必须实现全部抽象方法
接口中的抽象方法(默认 public abstract)在实现类中必须被重写。哪怕只漏一个,编译器就会报错。
- 接口定义:
interface Animal {
void eat();
void sleep();
} - 合法实现:
class Dog implements Animal {
public void eat() { System.out.println("dog eats"); }
public void sleep() { System.out.println("dog sleeps"); }
} - 非法写法(缺少 sleep):
class Cat implements Animal {
public void eat() { ... } // ❌ 编译失败
}
可以复用默认方法,无需强制重写
Java 8 起,接口支持 default 方法,它自带实现体。实现类可直接调用,也可选择性覆盖。
- 接口新增:
default void bark() { System.out.println("woof!"); } - Dog 类不写 bark() 也能编译通过,调用
new Dog().bark()会输出 "woof!" - 若 Dog 需要不同行为,可重写:
public void bark() { System.out.println("ruff!"); }
支持多接口实现,方法名冲突需显式解决
一个类可同时实现多个接口。当多个接口有同名抽象方法时,实现一次即可;但若同名 default 方法签名相同,必须在实现类中重写并明确调用某一方。
- 例如:
interface A { default void show() { System.out.println("A"); } }
interface B { default void show() { System.out.println("B"); } }
class C implements A, B {
public void show() { A.super.show(); } // 必须重写并指定来源
}
函数式接口可用 Lambda 简化单方法实现
如果接口只有一个抽象方法(且标注 @FunctionalInterface),不必写完整类,直接用 Lambda 表达式创建实例。
- 例如 Runnable 接口:
Runnable r = () -> System.out.println("running");
r.run(); // 输出 "running" - 这本质是编译器自动生成了一个匿名实现类,语法更简洁。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











