我们可以在 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 创建)。
我了解到我们没有实例化接口,但这段代码运行良好。
谁能告诉我它为什么有效?
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 创建)。