在单个.Java文件中,是否可以拥有公共接口和公共类(实现接口)
我是Java编码的新手,并且在网上的大多数地方编写的.java文件不能包含超过2个公共类。我想知道接口和类是否属实。
答案 0 :(得分:16)
不,这是不可能的。每个.java
文件最多可以有一个顶级公共类型。 JLS 7.6. Top Level Type Declarations 声明如下:
[...]每个编译单元最多只能有一个[顶级公共]类型。
但是,您可以在同一个文件中拥有受包保护的类。这编译得很好(如果你把它放在一个名为Test.java
的文件中:
public interface Test {
// ...
}
class TestClass implements Test {
// ...
}
答案 1 :(得分:7)
如果使用嵌套类,则可以在一个文件中包含任意数量的公共类。在您的示例中:
public interface I {
public class C implements I {
...
}
public class D implements I {
...
}
...
}
答案 2 :(得分:5)
public interface A
{
public void helloWorld();
public static class B implements A{
@Override
public void helloWorld() {
System.out.print("Hello World");
}
}
}
答案 3 :(得分:3)
Java规则是只有一个公共类或接口可以显示在源文件中,并且名称必须与文件匹配(即Test.java - >公共类测试或公共接口测试,但不是两者)
答案 4 :(得分:0)
在理解界面时,还需要了解interface driven programming作为下一步。它告诉界面的实际用途是什么。它在Java(或任何其他语言)程序中扮演什么角色。
答案 5 :(得分:0)
是的,我们可以在同一Java文件中同时编写 Interface 和 public class
interface Interfable {
public void interfMethod();
}
公共类TestLam {
int x = 5;
public void testLamMethod() {
int y = 10;
Interfable i = () -> {
System.out.println(x);
System.out.println(y);
};
i.interfMethod();
}
public static void main(String[] args) {
TestLam t = new TestLam();
t.testLamMethod();
}
}
输出: 5
10
//注意.java文件名应与类名相同