我在Java程序中发现了一个错误:
必须在自己的类
中定义公共类型abc类
如何解决此错误?我正在使用Eclipse。我是Java编程的新手。
答案 0 :(得分:9)
每个源文件只能包含一个 public 类。名为ClassName
的类应该位于名为ClassName.java
的文件中,并且只应在那里定义该类。
这种情况的例外是匿名和内部类,但理解你是Java的初学者,这是一个高级主题。现在,每个文件保留一个类。
回答你的补充:继承课是可以的,这完全没问题。这没关系,每个类应该仍然有自己的文件。
答案 1 :(得分:6)
公共顶级类(即未嵌套在其他类中的公共类)必须在与类名匹配的文件中定义。所以“Foo”类的代码必须存在于“Foo.java”中。
来自language specification, section 7.6:
当软件包存储在文件系统(第7.2.1节)中时,如果在由以下文件组成的名称下的文件中找不到类型,则主机系统可以选择强制执行编译时错误的限制。如果满足以下任一条件,则输入类型名称加上扩展名(例如.java或.jav):
该类型由声明类型的包的其他编译单元中的代码引用。
该类型声明为public(因此可以从其他包中的代码访问)。
这条规则, 后面没有编译器,几乎普遍遵守。
答案 2 :(得分:6)
好的,也许一个例子会有所帮助。
在文件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)
}
这会让事情更清楚吗?
答案 3 :(得分:5)
名为“abc”的公共类必须位于名为abc.java
的文件中答案 4 :(得分:1)
你可以创建一个现有文件的新类,如果它是私有的,但你应该不这样做。
每个类创建一个文件。 如果你创建一个新类,Eclipse会为你做这件事。
对于Java编程,您必须了解类,包和文件的构造。即使Eclipse帮助您,您也必须自己了解它。所以开始阅读Java书籍或教程!