我在Java程序中发现了一个错误:
必须在自己的类中定义公共类型abc类
我该如何解决这个错误?我正在使用Eclipse.我是Java编程的新手.
每个源文件必须只包含一个公共类.名为的类ClassName
应该在一个名为的文件中ClassName.java
,并且只应在那里定义该类.
这种情况的例外是匿名和内部类,但理解您是Java的初学者,这是一个高级主题.现在,每个文件保留一个类.
回答你的补充:继承类是可以的,这完全没问题.这没关系,每个类应该还有自己的文件.
公共顶级类(即未嵌套在其他类中的公共类)必须在与类名匹配的文件中定义.所以"Foo"类的代码必须存在于"Foo.java"中.
从语言规范,第7.6节:
当包存储在文件系统(第7.2.1节)中时,如果在由类型名称加上名称的文件中找不到类型,主机系统可以选择强制执行编译时错误的限制.如果满足以下任一条件,则为扩展名(例如.java或.jav):
该类型由声明类型的包的其他编译单元中的代码引用.
该类型被声明为public(因此可以从其他包中的代码访问).
这条规则,它不具有所应遵循的编译器,是非常普遍遵守.
好吧,也许一个例子会有所帮助.
在文件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的文件中