【问题标题】:Defining classes in Java files在 Java 文件中定义类
【发布时间】:2009-01-22 20:45:53
【问题描述】:

我在我的 Java 程序中发现了一个错误:

公共类型abc类必须定义在自己的类中

如何解决此错误?我正在使用 Eclipse。我是 Java 编程新手。

【问题讨论】:

    标签: java class


    【解决方案1】:

    每个源文件必须只包含一个 public 类。一个名为ClassName 的类应该在一个名为ClassName.java 的文件中,并且应该只定义该类。

    匿名类和内部类除外,但了解您是 Java 的初学者,这是一个高级主题。现在,每个文件保留一个类。

    回答您的补充:继承类是可以的,这完全没问题。没关系,每个类还是应该有自己的文件。

    【讨论】:

    • 同一个文件中可以有多个顶级类,但只能有一个public类。只有公共类必须符合文件名规则(就 javac 和 Eclipse 行为而言;编译器可以对非公共类型强制执行此操作 - 请参阅上面的规范参考)。
    【解决方案2】:

    公共顶级类(即不嵌套在其他类中的公共类)必须在与类名匹配的文件中定义。所以类“Foo”的代码必须存在于“Foo.java”中。

    来自language specification, section 7.6


    当包存储在文件系统中时(第 7.2.1 节),如果在由如果以下任一情况为真,请键入名称加上扩展名(例如 .java 或 .jav):

    • 该类型被声明该类型的包的其他编译单元中的代码引用。

    • 该类型被声明为公共的(因此可以从其他包中的代码访问)。


    编译器不必须遵循这条规则,几乎得到普遍遵守。

    【讨论】:

      【解决方案3】:

      好的,也许举个例子会有所帮助。

      在 MySuperClass.java 文件中:

      public class MySuperClass {
          // whatever goes here
      }
      public class MySubClass1 extends MySuperClass {
          // compile error: public class MySubClass1 should be in MySubClass1.java
      }
      class MySubClass2 extends MySuperClass {
          // no problem (non-public class does not have to be in a file of the same name)
      }
      

      在 MySubClass3.java 文件中:

      public class MySubClass3 extends MySuperClass {
          // no problem (public class in file of the same name)
      }
      

      这会让事情更清楚吗?

      【讨论】:

        【解决方案4】:

        名为“abc”的公共类必须在名为 abc.java 的文件中

        【讨论】:

          【解决方案5】:

          可以在现有文件中创建一个新类(如果它是私有的),但您不应该这样做。

          每个班级创建一个文件。 如果您创建一个新类,Eclipse 会为您执行此操作。

          对于 Java 编程,您必须了解类、包和文件的构造。即使 Eclipse 可以帮助您,您也必须自己了解它。所以开始阅读 Java 书籍或教程吧!

          【讨论】:

            猜你喜欢
            • 2011-03-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-12-26
            • 2017-08-08
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多