为什么不能在java中的一个文件中定义两个公共类?

为什么B级不能公开? 我如何在其他课程中使用课程? 在Cons内部定义它更好吗?!

// public class B { why not? class B { int x; B (int n) { x=n; System.out.println("constructor 'B (int n)' called!"); } } public class Cons { public static void main(String[] args) {B b = new B();} } 

根据java语言规范,文件(.java)中只能有一个公共类,文件名应与公共类名相同。

如果您希望在其他placs中访问B类,您可以创建一个单独的B.java文件并将B类代码移动到该文件。

该主题可能会为您提供更多信息。

问:为什么不能在java中的一个类范围中定义两个公共类?

答:语言的设计方式。 一旦你习惯了它,你会发现它可以帮助你组织代码。

问:为什么B级不能公开?

它可以,但它必须在一个名为B.java的文件中。 它必须是该文件中唯一的公共类。

问:如何在其他课程中使用课程?

您可能想要重新解释这个问题。 但有多种方法:

  • 使该类成为公共,实例化它,并在其上调用方法。
  • 将类添加到同一文件中,不要将其公开(您将无法),实例化它,并在其上调用方法。 您将能够在同一文件或包中的其他类中使用它。 这是“默认”访问修饰符,这意味着您将能够在同一个包中的其他类中实例化此类。
  • 使其成为内部(或嵌套)类,实例化它,并在其上调用方法。 它只能通过其父类中的名称访问。 这应该会增加封装并使代码更具可读性。 http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html

:在Cons中定义它更好吗?

答:我个人并不经常这样做。 我发现它使代码变得有点混乱,尽管上面的链接说不然。

将您的类放在不同的文件中。

类的名称应与文件名匹配。