【发布时间】:2011-07-19 05:28:23
【问题描述】:
是否可以在包含 main 方法的同一文件中创建一个类?我正在练习的编程竞赛只接受单个文件作为解决方案,因此我无法将课程写入单独的文件并将其发送。
我知道你可以创建内部类,但它提供的功能是否与普通类相同?
【问题讨论】:
标签: java class inner-classes
是否可以在包含 main 方法的同一文件中创建一个类?我正在练习的编程竞赛只接受单个文件作为解决方案,因此我无法将课程写入单独的文件并将其发送。
我知道你可以创建内部类,但它提供的功能是否与普通类相同?
【问题讨论】:
标签: java class inner-classes
是的,您可以在单个 .java 文件中定义多个顶级类。见Java: Multiple class declarations in one file
对于大多数用途,嵌套类应该也能正常工作。您可能需要声明此类static 以避免implicit reference to the outer class。
【讨论】:
你总是有一个持有 main 方法的类,但你也可以将内部类放入这个类中。
类似这样的:
public class A {
protected class B {
}
public static void main(String[] args){
}
}
【讨论】:
内部类不能有静态方法,所以你不能在那里有main。不过静态嵌套类确实可以有main。
此外,正如 aix 的回答所说,您还可以在同一个源文件中拥有多个包私有顶级类。
【讨论】:
从编译器的角度来看,在单个源文件中有多个类是 100% 有效的。我经常使用此功能在单个屏幕中创建对象层次结构,并稍后将类和接口重构为它们自己的源文件。 请记住,源文件中只有一个类可以公开。
public class Runner {
public static void main(String[] args){
new A().process();
}
}
class A{
public void process(){
...
}
}
【讨论】: