在Java文件中定义类

时间:2009-01-22 20:45:53

标签: java class

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

  

必须在自己的类

中定义公共类型abc类

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

5 个答案:

答案 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书籍或教程!