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

Ber*_*ard 7 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();}
    }
Run Code Online (Sandbox Code Playgroud)

kos*_*osa 14

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

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

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


Mar*_*rvo 9

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

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

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

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

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

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

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

:在Cons中定义它更好吗?

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