6

Java でのクラス宣言がデフォルトpublicのみでよいかどうかを問い合わせたいのですが?

ファイル内に存在できるクラスは 1 つだけでありpublic、そのファイルはクラスの名前でなければならないことを読みました。

例えばTest.java

public class Test {

}

しかし、クラスにはクラスを持たないこともpublicできますが、多くのデフォルトクラスを持たせることもできます。

例えばExam.java

class Exam {

}

class Examination {

}

クラスは 1 つしか持てないのに、1 つのファイル内publicに多くのデフォルトクラスを持てるのはなぜですか?

4

2 に答える 2

8

public クラスは 1 つしか持てないのに、1 つのファイル内に複数のデフォルト クラスを持てるのはなぜですか?

7.6. トップレベルの型宣言:

この制限は、コンパイル単位ごとにそのような型が最大で 1 つ存在する必要があることを意味します。この制限により、Java コンパイラはパッケージ内の名前付きクラスを簡単に見つけることができます。実際には、多くのプログラマーは、クラスまたはインターフェイスの型をそれぞれ独自のコンパイル ユニットに配置することを選択します。これは、それがパブリックであるかどうか、または他のコンパイル ユニットのコードによって参照されるかどうかに関係ありません。

クラスに修飾子 (デフォルトの修飾子) がない場合、同じパッケージからのみアクセスできます。

于 2013-10-16T11:19:39.007 に答える
3

これは、別の回答者が指摘した設計上の決定です。これは、長期的にコードを整理するのに役立ちます。ただし、パブリックの内部クラスを持つことはできます。

于 2013-10-16T11:28:17.823 に答える