public
クラスの前に書かないと、のように機能することに気付きましたpublic class
。理解できない どうして?public
クラスを、private
またはとして宣言しないと、エラーが表示されるはずprotected
です。しかし、それはうまくいきます。理由は何ですか?
9 に答える
クラスの前にパブリックを書かないと、パブリッククラスと同じように機能することに気付きました。
いいえ、そうではありません。public でない限り、クラスは同じパッケージに含まれていない他のコードからは見えません。デフォルトのアクセシビリティ (明示的に指定することはできません) では、クラス (または他のメンバー) は同じパッケージ内の他のコードからのみ表示されます。
詳細については、 Java 言語仕様のセクション 6.6とJava チュートリアル (クラスのメンバーへのアクセスの制御)をお読みください。
クラスはpackage private
デフォルトで(ここで概説されているように)、同じようには動作しません。別のパッケージからクラスを消費しようとしていないからだと思うだけです。
.java ソース ファイルごとに 1 つのパブリック クラスのみが存在する必要があり、ファイルの名前はこのパブリック クラスと一致する必要があります。
同様の質問がSOで以前に尋ねられます。ここで見つけてください
おそらく1つのファイルと同じパッケージで作業しているという理由だけで、同じように機能します。
複数のパッケージがある場合は、問題があります。クラス名の前に「public」が付いていないクラスは、別のパッケージでは作成できません。そのコンストラクターは使用できません。クラスが作成されたパッケージの外からアクセスすることはできません。
アクセス修飾子を指定しない場合、デフォルトでパッケージのプライベート アクセスになります。このクラスは、パッケージの外ではアクセスできません。理想的には、混乱や意図しない結果を避けるために、JLS にパッケージ アクセスのキーワードを含める必要があります。
何かのようなもの、
default class Student{}
クラスの宣言には、次の 2 つのキーワードのみを使用できます。
- public .例: public class Student{//...}
- プライベート パッケージ (デフォルト) .例: クラス 注{//...} .彼のパッケージでのみ表示されます。
クラス内でメンバーを宣言する場合にのみ、private と protected を使用できます。例:
public class Student{
protected Note note;
}