Sea*_*lly 124
是的,它可以.但是,每个文件只能有一个公共顶级类.java,而公共顶级类必须与源文件具有相同的名称.
在一个源文件中包含多个类的目的是将相关的支持功能(内部数据结构,支持类等)与主公共类捆绑在一起.请注意,不执行此操作总是可以的 - 唯一的影响是代码的可读性(或不可读性).
kgi*_*kis 17
如果要实现公共类,则必须在与该类同名的文件中实现它.单个文件可以包含一个公共类和一些私有类.如果类仅由公共类在内部使用,则此选项很有用.此外,公共类还可以包含内部类.
虽然在单个源文件中有一个或多个私有类是可以的,但我认为使用内部和匿名类更具可读性.例如,可以使用匿名类在公共类中定义Comparator类:
  public static Comparator MyComparator = new Comparator() {
    public int compare(Object obj, Object anotherObj) {
    }
  };
Run Code Online (Sandbox Code Playgroud)
Comparator类通常需要一个单独的文件才能公开.这样它就与使用它的类捆绑在一起.
.java文件称为编译单元.每个编译单元可以包含任意数量的顶级类和接口.如果没有公共顶级类型,则编译单元可以命名为任何名称.
//Multiple.java
//preceding package and import statements
class MyClass{...}
interface Service{...}
...
//No public classes or interfaces
...
Run Code Online (Sandbox Code Playgroud)
编译单元中只能有一个公共类/接口.cu必须与此公共顶级类型完全相同.
//Test.java
//named exactly as the public class Test
public class Test{...}
//!public class Operations{...}
interface Selector{...}
...
//Other non-public classes/interfaces
Run Code Online (Sandbox Code Playgroud)
(关于第2部分中课程数量及其访问级别的要点)
一般来说,每个文件应该有一个类。如果你这样组织,那么当你搜索一个类时,你知道你只需要搜索具有该名称的文件。
例外情况是当一个类最好使用一个或多个小辅助类来实现时。通常,当这些类存在于同一文件中时,代码最容易理解。例如,您可能需要一个小的“元组”包装类来在方法调用之间传递一些数据。另一个例子是实现 Runnable 或 Callable 的“任务”类。它们可能很小,最好与创建和调用它们的父类结合使用。
是的,您可以创建多个公共类,但它必须是一个嵌套类。
public class first {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
    }
    public class demo1
    {
        public class demo2
        {
        }
    }
}
Run Code Online (Sandbox Code Playgroud)