【发布时间】:2009-01-22 20:45:53
【问题描述】:
我在我的 Java 程序中发现了一个错误:
公共类型abc类必须定义在自己的类中
如何解决此错误?我正在使用 Eclipse。我是 Java 编程新手。
【问题讨论】:
我在我的 Java 程序中发现了一个错误:
公共类型abc类必须定义在自己的类中
如何解决此错误?我正在使用 Eclipse。我是 Java 编程新手。
【问题讨论】:
每个源文件必须只包含一个 public 类。一个名为ClassName 的类应该在一个名为ClassName.java 的文件中,并且应该只定义该类。
匿名类和内部类除外,但了解您是 Java 的初学者,这是一个高级主题。现在,每个文件保留一个类。
回答您的补充:继承类是可以的,这完全没问题。没关系,每个类还是应该有自己的文件。
【讨论】:
公共顶级类(即不嵌套在其他类中的公共类)必须在与类名匹配的文件中定义。所以类“Foo”的代码必须存在于“Foo.java”中。
来自language specification, section 7.6:
当包存储在文件系统中时(第 7.2.1 节),如果在由如果以下任一情况为真,请键入名称加上扩展名(例如 .java 或 .jav):
该类型被声明该类型的包的其他编译单元中的代码引用。
该类型被声明为公共的(因此可以从其他包中的代码访问)。
编译器不必须遵循这条规则,几乎得到普遍遵守。
【讨论】:
好的,也许举个例子会有所帮助。
在 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)
}
这会让事情更清楚吗?
【讨论】:
名为“abc”的公共类必须在名为 abc.java 的文件中
【讨论】:
您可以在现有文件中创建一个新类(如果它是私有的),但您不应该这样做。
每个班级创建一个文件。 如果您创建一个新类,Eclipse 会为您执行此操作。
对于 Java 编程,您必须了解类、包和文件的构造。即使 Eclipse 可以帮助您,您也必须自己了解它。所以开始阅读 Java 书籍或教程吧!
【讨论】: