【问题标题】:Why can't two public classes be defined in one file in java? [duplicate]java 为什么不能在一个文件中定义两个公共类? [复制]
【发布时间】:2012-10-31 00:12:49
【问题描述】:

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

【问题讨论】:

  • 每个源文件保留一个公共类的原因实际上是为了使编译和类查找过程更快,因为它可以在链接期间更有效地查找源文件和编译文件(导入语句),阅读更多在programmingmitra.blogspot.in/2016/05/…

标签: java class


【解决方案1】:

Q.为什么java中不能在一个类作用域中定义两个公共类?

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

问。为什么 B 类不能公开?

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

问。如何在其他类中使用一个类?

答。您可能需要重新表述这个问题。但是有多种方法:

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

问。在 Cons 中定义更好吗?

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

【讨论】:

  • 嵌套类也可以是静态的,在这种情况下,它可以像独立类一样使用。
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-06-03
      • 1970-01-01
      • 2011-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-26
      • 2021-05-19
      • 1970-01-01
      相关资源
      最近更新 更多