1
public class A
{
}  

public class B 
{
    public static void main(String[] args) 
    {
    }
}

为什么我们不能将这两个类都声明为公共的?
为什么只有Main类可以公开?我知道通过公开课程,它将允许您在包中访问,但如果我让

     public    class a
     { 

     }
    class B
     {
    public static void main(String[] args) 
    {

     }
  }

为什么这段代码会出错,我们真的需要通知主类是公共的吗?因为每个类都是公共的

4

2 回答 2

4

因为一个 .java 文件只能包含一个公共类。

如果您希望这两个类公开,则必须将它们放入两个 .java 文件中:A.javaB.java.

来自JLS 7.6。顶级类型声明

这个限制意味着每个编译单元最多只能有一个这样的类型。此限制使 Java 编译器可以轻松地在包中找到命名类。在实践中,许多程序员选择将每个类或接口类型放在自己的编译单元中,无论它是公共的还是被其他编译单元中的代码引用。

于 2013-06-06T20:31:50.240 回答
2

The filename for a Java class is the public class' name. You cannot have 2 file names, hence you cannot have 2 public classes.

于 2013-06-06T20:33:47.573 回答