8

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

3 回答 3

14

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

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

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

于 2012-11-11T06:12:27.863 回答
10

Q. java 为什么不能在一个类范围内定义两个公共类?

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

Q. 为什么B类不能公开?

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

Q. 如何在其他课程中使用课程?

A. 你可能想重新表述这个问题。但是有多种方法:

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

:在 Cons 中定义它会更好吗?

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

于 2012-11-11T06:29:16.343 回答
1

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

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

于 2012-11-11T06:13:31.767 回答