一个 java 文件可以有多个类吗?

在一个 Java 文件中有多个类的目的是什么。

编辑: 这可以通过在公共类中创建内部类来实现,对吗?

181162 次浏览

变化..一个这样的例子是匿名类(在使用事件侦听器等时,您会遇到很多这样的情况)。

是的,可以。但是,每个 .java文件只能有一个 public top-level类,并且公共顶级类必须与源文件具有相同的名称。

在一个源文件中包含多个类的目的是将相关的支持功能(内部数据结构、支持类等)与主公共类捆绑在一起。请注意,不这样做总是可以的——唯一的影响是代码的可读性(或不可读性)。

是的,它可以,但是在任何包中只能有一个公共类,因为 Java 编译器创建了。类文件的名称与公共类名称相同,因此,如果它们是多于1个公共类,将很难为编译器选择应该是什么类文件的名称。

如果要实现公共类,则必须在与该类同名的文件中实现它。一个文件可以包含一个公共类,也可以包含一些私有类。如果这些类仅由公共类在内部使用,那么这是非常有用的。此外,公共类还可以包含内部类。

尽管在单个源文件中有一个或多个私有类是可以的,但是我认为使用内部类和匿名类更具可读性。例如,可以使用一个匿名类在公共类中定义比较器类:

  public static Comparator MyComparator = new Comparator() {
public int compare(Object obj, Object anotherObj) {


}
};

比较器类通常需要一个单独的文件才能成为公共文件。通过这种方式,它与使用它的类绑定在一起。

通常,每个文件应该有一个类。如果您按照这种方式组织事情,那么当您搜索一个类时,您知道您只需要搜索具有该名称的文件。

例外的情况是,类最好使用一个或多个小型助手类来实现。通常,当这些类出现在同一个文件中时,代码是最容易遵循的。例如,您可能需要一个小的“元组”包装类来在方法调用之间传递一些数据。另一个例子是实现 Runnable 或 Callable 的“任务”类。它们可能非常小,以至于最好将它们与创建和调用它们的父类结合起来。

除了匿名内部类之外,另一个用途是实现公共接口(看这篇文章)的私有内部类。外部类可以访问内部类的所有私有字段和方法。

这使您可以创建两个紧密耦合的类,例如模型及其视图,而无需公开其中任何一个的实现。另一个例子是集合及其迭代器。

是的,想要多少就有多少!

但是,每个文件中只有一个“公共”类。

我认为应该是“每个.java 文件只能有一个非静态的顶级公共类”。 Isn't it?

Java 文件称为编译单元。 每个编译单元可以包含任意数量的顶级类和接口。 如果没有公共顶级类型,那么可以将编译单元命名为任何类型。

//Multiple.java
//preceding package and import statements


class MyClass{...}
interface Service{...}
...
//No public classes or interfaces
...

编译单元中只能有一个公共类/接口。C.u 必须精确地命名为这个公共顶级类型。

//Test.java
//named exactly as the public class Test
public class Test{...}
//!public class Operations{...}
interface Selector{...}
...
//Other non-public classes/interfaces

关于主要方法的要点-第1部分

第二部分

(有关第2部分所述类别的数目及其接达级别的要点)

If you want to implement a singleton, that is a class that runs in your program with only one instance in memory throughout the execution of the application, then one of the ways to implement a singleton is to nest a private static class inside a public class. Then the inner private class only instantiates itself when its public method to access the private instance is called.

看看这篇维基文章,

Https://en.wikipedia.org/wiki/singleton_pattern

这个概念需要一段时间来琢磨。

在一个。在 java 文件中,只能有一个名称与文件相同的公共顶级类,但是可能有几个公共内部类可以导出到每个人并访问外部类的字段/方法,例如: 警报对话框中的 AlertDialog 生成器(由‘ public static’修改)(由‘ public’修改)

是的,你可以有一个以上的班级。Java 文件。但是你已经让其中一个公开了。然后拯救。与公共类同名的 java 文件。你什么时候能编译它。比你将得到的 java 文件分离。中定义的每个类的类文件。Java 文件。

除此之外,在一个.java 文件中定义多个类的方法太多了。

  1. 内部课堂使用概念。
  2. 匿名类的使用概念。

太棒了! Java 文件只能包含一个公共类。

如果你希望这两个类是公共的,它们必须被分成两个。Java 文件: A.java 和 B.java。

是的,您可以在一个。Java 文件。其中最多有一个是公开的。其他的是私人包裹。它们不能是私有的或受保护的。如果其中一个是公共的,则文件必须具有该类的名称。否则,任何东西都可以作为文件的名称给予该文件。

在一个文件中包含多个类意味着这些类在同一个包中。所以包中的其他类,但不在文件中的类也可以使用这些类。而且,当导入包时,导入类也可以使用它们。

For a more detailed investigation, you can visit my blog post in here.

是的200% ,

例如:

class A {
void methodDeclaration() { System.out.println("!!!"); }
}
class B {
public static void main(String[] args) {
new A().methodDeclaration();
}
}

是的,您可以创建多个公共类,但它必须是一个嵌套类。

public class first {


public static void main(String[] args) {
// TODO Auto-generated method stub
}


public class demo1
{


public class demo2
{


}
}
}

一个文件中只能有一个公共类 顶层类。该公共类的类名应该是文件的名称。它可以有许多公共内部类。

在一个文件中可以有许多类。文件中不同级别的类可见性的限制如下:

顶级班级:
一节公共课
0个私人教室
任意数量的默认类

内部课程:
具有任何可见性的任意数量的内部类(默认、私有、受保护、公有)

如果我说错了,请纠正我。

是的,可以。但是,每个类只能有一个公共类。Java 文件,因为公共类必须与源文件具有相同的名称。