同一文件中的Java公共接口和公共类

在单个.Java文件中,是否可以拥有公共接口和公共类(实现接口)

我是Java编码的新手,它在网上的大多数地方编写,.java文件不能包含超过2个公共类。 我想知道接口和类是否也是如此。

不,这是不可能的。 每个.java文件最多可以有一个顶级公共类型。 JLS 7.6。 顶级类型声明声明如下:

[…]每个编译单元最多只能有一个[顶级公共]类型。

但是,您可以在同一文件中拥有受包保护的类。 这编译得很好(如果你把它放在一个名为Test.java的文件中:

 public interface Test { // ... } class TestClass implements Test { // ... } 

如果使用嵌套类,则可以在一个文件中包含任意数量的公共类。 在你的例子中:

 public interface I { public class C implements I { ... } public class D implements I { ... } ... } 
 public interface A { public void helloWorld(); public static class B implements A{ @Override public void helloWorld() { System.out.print("Hello World"); } } } 

Java规则是只有一个公共类或接口可以显示在源文件中,并且名称必须与文件匹配(即Test.java – >公共类测试或公共接口测试,但不能两者都匹配)。

在理解接口的同时,还需要了解接口驱动编程作为下一步。 它告诉界面的实际用途是什么。 它在Java(或任何其他语言)程序中扮演什么角色。