我们可以在 java 中创建一个接口的对象吗?如果不是那么为什么下面的代码正在编译并显示正确的输出?

Can we make object of an interface in java? If not then why the code below is compiling and showing correct output?

我了解到我们没有实例化接口,但这段代码运行良好。

谁能告诉我它为什么有效?

public class Main {
    public static void main(String args[]) {
       System.out.println("Hello World!");
    }

    public interface lfrag{                        
       public void listen(String s);
    }

    lfrag lis;
}

你不是 'making an object'。您只是声明一个变量而不对其进行初始化。创建接口类型的变量是接口的用例,所以你一定可以做到。

定义变量正在使用您在定义接口时创建的协定。

在下面的片段中,您只打印出 Hello world!:

public static void main(String args[]) {
    System.out.println("Hello World!");
}

尽管您确实有一个接口 lflag,但您不会 实例化 在其中创建的任何内容,您只 声明 lfrag lis,这不会影响您的代码。

如果您尝试声明 lfrag lis = new lfrag(),您会得到一个错误 - 您 不能 创建接口的对象。你可以做的是,创建一个 class 然后在其上实现一个接口 - 这将允许你在你的接口中覆盖 class 的方法。

Lfrag lis;

这里你创建了一个 Lfrag 类型的引用变量,它是 allowed.Reference 变量用于访问堆内存中的对象(由 new 创建)。