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

时间:2012-11-11 06:10:26

标签: java class

为什么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();}
    }

3 个答案:

答案 0 :(得分:13)

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

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

thread可能会为您提供更多信息。

答案 1 :(得分:8)

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

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

问。为什么B类无法公开?

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

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

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

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

问。在Cons?中定义它是否更好?

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

答案 2 :(得分:1)

将您的课程放在不同的文件中。

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