java中接口通过implements被类实现,是契约式实现而非继承;非抽象类必须用public修饰符实现接口所有抽象方法,可同时实现多个接口,抽象类可选择性实现。

Java 中,接口通过 implements 关键字被类实现,表示该类“承诺提供接口中所有抽象方法的具体行为”。这不是继承,而是契约式实现——类必须覆盖接口中每个 public abstract 方法(除非类本身是 abstract)。
基本语法与要求
一个非抽象类实现接口时,需满足两个核心条件:
- 在类声明中使用
implements 接口名(可实现多个接口,用逗号分隔) - 为接口中每个抽象方法提供
public访问修饰符的具体实现(不能省略public,即使接口方法默认就是public abstract)
单接口实现示例
定义一个接口:
interface Drawable {void draw();
int getArea();
}
实现该接口的类:
private double radius;
public Circle(double r) { this.radius = r; }
@Override
public void draw() {
System.out.println("Drawing a circle");
}
@Override
public int getArea() {
return (int)(Math.PI * radius * radius);
}
}
多接口实现与注意事项
一个类可以同时实现多个接口,例如:
class Button implements Clickable, Drawable { ... }注意以下几点:
- 若多个接口中有同名同签名的默认方法(
default),类必须重写该方法,否则编译报错 - 若接口中有静态方法,类不会继承它们,也不能通过
implements获得——静态方法属于接口自身,只能用InterfaceName.method()调用 - 接口中的常量(
public static final字段)会被类“继承”,但实际是直接访问接口的字段,不占用类的内存空间
抽象类实现接口的灵活性
抽象类实现接口时,无需实现全部方法,可选择性实现或留给子类完成:
abstract class Shape implements Drawable {@Override
public void draw() {
System.out.println("Drawing a shape");
}
// getArea() 可不实现,由子类负责
}
这样既复用共性逻辑,又保留扩展能力。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











