接口能有构造方法吗

返回 面试 · 速查全集 Java常见面试题

不能。 Java 接口不能有构造方法,也不能被 new 实例化。

对比 抽象类会有构造函数吗抽象类和接口的区别


结论

类型构造方法直接 new
抽象类不能
接口不能

原因

  1. 接口不能实例化 — 只定义契约,没有「接口对象」
  2. 无实例字段 — 成员只能是常量,无需构造器初始化
  3. 语法禁止 — 在 interface 中写构造器编译报错
public interface Repository {
    void save(Object entity);
    // Repository() { }  // 编译错误
}

实现类自行定义构造器:

public class UserRepository implements Repository {
    private final DataSource ds;
 
    public UserRepository(DataSource ds) {
        this.ds = ds;
    }
 
    @Override
    public void save(Object entity) { /* ... */ }
}

常见混淆

接口里可以有不是构造器
default 方法(Java 8+)new 语义
static 方法工厂/工具,仍不创建接口实例
private 方法(Java 9+)供 default 复用

相关笔记