回答:
はい、できます。ただし、公開トップレベルクラスは1 つにつき1 つのみです。.java
ファイルであり、パブリックトップレベルクラスはソースファイルと同じ名前でなければなりません。
1つのソースファイルに複数のクラスを含める目的は、関連するサポート機能(内部データ構造、サポートクラスなど)をメインのパブリッククラスと一緒にバンドルすることです。これを行わなくても常に問題はありません。唯一の影響は、コードの可読性(またはそうでないか)にあります。
java.awt.LightweightDispatcher
ですか
パブリッククラスを実装する場合は、そのクラスと同じ名前のファイルに実装する必要があります。1つのファイルには、1つのパブリッククラスと、必要に応じていくつかのプライベートクラスを含めることができます。これは、クラスがパブリッククラスによって内部的にのみ使用される場合に役立ちます。さらに、パブリッククラスには内部クラスを含めることもできます。
単一のソースファイルに1つ以上のプライベートクラスを含めることは問題ありませんが、内部クラスと匿名クラスを使用する方が読みやすくなります。たとえば、匿名クラスを使用して、パブリッククラス内にコンパレータクラスを定義できます。
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
...
コンパイル単位には、パブリッククラス/インターフェースを1つだけ含めることができます。cuは、このパブリックトップレベルタイプとまったく同じ名前にする必要があります。
//Test.java
//named exactly as the public class Test
public class Test{...}
//!public class Operations{...}
interface Selector{...}
...
//Other non-public classes/interfaces
(第2部で取り上げたクラス数とそのアクセスレベルに関するポイント)
はい、できますが、Javaコンパイラーが.Classファイルを作成するので、どのパッケージ内にもパブリッククラスは1つしか存在できません。パブリッククラス名と同じ名前の.Classファイルです。クラスファイルの名前をコンパイラに指定します。
「.javaファイルごとに非静的な最上位のパブリッククラスは1つしか存在できない」と思います。だよね?
シングルトンを実装する場合、それはアプリケーションの実行中にメモリ内にインスタンスが1つだけあるプログラムで実行されるクラスです。シングルトンを実装する方法の1つは、パブリッククラス内にプライベート静的クラスをネストすることです。 。次に、内部プライベートクラスは、プライベートインスタンスにアクセスするためのパブリックメソッドが呼び出されたときにのみインスタンス化します。
このウィキの記事をチェックしてください。
https://en.wikipedia.org/wiki/Singleton_pattern
コンセプトは噛むのに時間がかかります。
.javaファイルでは、ファイルと同じ名前のパブリックトップレベルクラスは1つしか存在できませんが、すべてのユーザーにエクスポートして外部クラスのフィールド/メソッドにアクセスできるパブリック内部クラスがいくつかある場合があります。次に例を示します。 :AlertDialog.Builder( 'public static' により変更)in AlertDialog( 'public'により変更)
はい。1つの.Javaファイルに複数のクラスを含めることができます。しかし、あなたはそれらの1つを公開しています。パブリッククラスの名前と同じ名前で.javaファイルを保存します。その.javaファイルをコンパイルすると、.javaファイルで定義されたクラスごとに個別の.classファイルが取得されます。
これとは別に、1つの.javaファイルで複数のクラスを定義する方法が多すぎます。
はい、.javaファイル内に複数のクラスを含めることができます。最大で1つは公開できます。その他はパッケージプライベートです。それらをプライベートまたは保護することはできません。パブリックの場合、ファイルにはそのクラスの名前が必要です。それ以外の場合は、そのファイルに名前として何でも指定できます。
1つのファイル内に多くのクラスがあることは、それらのクラスが同じパッケージにあることを意味します。そのため、そのパッケージ内にあるがそのファイル内にない他のクラスも、それらのクラスを使用できます。さらに、そのパッケージがインポートされると、インポートするクラスもそれらを使用できます。
パブリッククラスのトップレベルは 1つだけですファイルには、クラスをます。そのパブリッククラスのクラス名は、ファイルの名前である必要があります。多くのパブリック内部クラスを持つことができます。
1つのファイルに多くのクラスを含めることができます。ファイル内のクラス可視性のさまざまなレベルの制限は次のとおりです。
トップレベルのクラス:
1つのパブリッククラス
0のプライベートクラス
任意の数のデフォルト/保護クラス
内部クラス:
任意の可視性を持つ任意の数の内部クラス(デフォルト、プライベート、保護、パブリック)
私が間違っていたら訂正してください。
はい、できます。ただし、パブリッククラスはソースファイルと同じ名前でなければならないため、.javaファイルごとに1つのパブリッククラスしか存在できません。