You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java为何支持通过带重写方法的匿名类实现接口实例化?

接口的"实例化"真相:匿名类的作用

在Java里,接口是抽象结构,本身没法直接实例化——它只定义方法签名作为契约,没有具体方法体。通常接口要么被具体类实现,要么被其他接口继承。

但接触匿名类后会发现,用它的语法似乎能直接"实例化"接口,本质是匿名类即时提供了接口方法的实现,并非真的实例化接口本身。

示例代码

interface Greeter {
    void greet();
}

public class HelloWorld {
    public static void main(String[] args) {
        Greeter greeter = new Greeter() {
            @Override
            public void greet() {
                System.out.println("Hello, world!");
            }
        };
        greeter.greet();
    }
}

代码说明

上述代码里,Greeter是仅含greet方法的接口。main方法中,我们并没有直接实例化Greeter接口,而是创建了一个实现了Greeter接口的匿名内部类,同时完成了这个类的实例化,并把实例赋值给Greeter类型的引用。

这里的new Greeter(){ ... }语法,是Java提供的语法糖,帮我们省略了显式定义一个实现类的步骤,直接在需要的地方写出接口的实现逻辑。

内容的提问来源于stack exchange,提问作者zaraterdz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 08:32:40