Answers:
是的,它可以。但是,每个文件只能有一个公共顶级类.java
,并且公共顶级类必须与源文件具有相同的名称。
在一个源文件中包含多个类的目的是将相关的支持功能(内部数据结构,支持类等)与主要的公共类捆绑在一起。请注意,不要这样做总是可以的-唯一的影响就是代码的可读性。
java.awt.LightweightDispatcher
呢
如果要实现公共类,则必须在与该类同名的文件中实现它。一个文件可以包含一个公共类,也可以包含一些私有类。如果这些类仅由公共类在内部使用,则这很有用。另外,公共类也可以包含内部类。
尽管在一个源文件中有一个或多个私有类是可以的,但是我想说使用内部类和匿名类是更容易理解的。例如,可以使用匿名类在公共类中定义Comparator类:
public static Comparator MyComparator = new Comparator() {
public int compare(Object obj, Object anotherObj) {
}
};
Comparator类通常需要单独的文件才能公开。这样,它便与使用它的类捆绑在一起。
.java文件称为编译单元。每个编译单元可以包含任意数量的顶级类和接口。如果没有公共的顶级类型,则可以为编译单元命名。
//Multiple.java
//preceding package and import statements
class MyClass{...}
interface Service{...}
...
//No public classes or interfaces
...
编译单元中只能有一个公共类/接口。cu必须完全与此公共顶级类型命名。
//Test.java
//named exactly as the public class Test
public class Test{...}
//!public class Operations{...}
interface Selector{...}
...
//Other non-public classes/interfaces
(有关第2部分中的类数及其访问级别的要点)
是200% ,
例:
class A {
void methodDeclaration() { System.out.println("!!!"); }
}
class B {
public static void main(String[] args) {
new A().methodDeclaration();
}
}
是的,可以,但是在任何包中只能有1个公共类,因为java编译器创建的.Class文件的名称与公共类名称相同,因此,如果它们超过1个公共类,则很难选择编译器应该是Class文件的名称。
如果要实现单例,即该类在程序中运行,并且在应用程序的整个执行过程中只有一个实例在内存中运行,那么实现单例的一种方法是将一个私有静态类嵌套在一个公共类中。然后,内部私有类仅在调用其访问私有实例的公共方法时实例化自己。
查看此Wiki文章,
https://zh.wikipedia.org/wiki/Singleton_pattern
这个概念需要一段时间才能坚持下去。
在.java文件中,只能有一个公共顶级类,其名称与文件相同,但是可能有几个公共内部类,可以将其导出给所有人并访问外部类的字段/方法,例如:AlertDialog(由“ public” 修改)中的AlertDialog.Builder(由“ public static” 修改)
是的。.java文件中可以包含多个类。其中最多可以是公开的。其他的都是包私有的。它们不能是私有的或受保护的。如果是公开的,则文件必须具有该类的名称。否则,可以为该文件提供任何名称。
在一个文件中包含许多类意味着这些类在同一包中。因此,位于该软件包中但不在该文件中的任何其他类也可以使用这些类。而且,当导入该包时,导入类也可以使用它们。
有关更详细的调查,您可以在此处访问我的博客文章。
一个文件中只能有一个公共类顶级类。该公共类的类名应为文件名。它可以有许多公共内部类。
一个文件中可以包含多个类。文件中各个级别的类可见性的限制如下:
顶级类别:
1个公共类别
0个私人类别
任意数量的默认/受保护类别
内部类:
具有任何可见性的任意数量的内部类(默认,私有,受保护,公共)
如果我错了,请纠正我。