可能性のある複製:
Java:最上位クラスをプライベートとして定義できるのはなぜですか?
private外部クラスを宣言できないのはなぜですか?内部プライベートクラスを持つことができる場合、なぜ外部プライベートクラスを持つことができないのでしょうか...?
質問に答えるには:
内部プライベートクラスを持つことができる場合、なぜ外部プライベートクラスを持つことができないのでしょうか...?
区別できるのは、内部クラスが「クラス」アクセスレベルにあり、「外部」クラスが「パッケージ」アクセスレベルにあることです。 Oracle Tutorials から:
クラスに修飾子がない場合(デフォルト、package-privateとも呼ばれます)、そのパッケージ内でのみ表示されます(パッケージは関連クラスの名前付きグループです。後のレッスンでそれらについて学習します)。
したがって、package-private(修飾子なしの宣言)は、「外部」クラスprivateの宣言から期待される効果であり、構文はまったく異なります。
private
修飾子は外部からクラスにアクセスできないようにするので、この利点はありません。それが違法であり、public
、abstract
& final
が許可されています。
注:protected
にすることはできません。
あなたはできる。
package test;
public class Test {
public static void main(String[] args) {
B b = new B();
}
}
class B {
// Essentially package-private - cannot be accessed anywhere else but inside the `test` package
}
private
クラスは使用できませんが、second
クラスは使用できます。
public class App14692708 {
public static void main(String[] args) {
PC pc = new PC();
System.out.println(pc);
}
}
class PC {
@Override
public String toString() {
return "I am PC instance " + super.toString();
}
}
また、static
内部クラスは、名前がOuterClass.InnerClass
であることを除いて、個別のクラスと区別できません。したがって、「クロージャ」を使用したくない場合は、静的内部クラスを使用します。
privateは、クラスが宣言されているクラスにのみアクセスできるようにします。クラス全体をプライベートにすると、外部から誰もクラスにアクセスできなくなり、クラスが役に立たなくなります。
内部クラスは、外部クラスが内部クラスにアクセスできるため、外部クラスを非公開にすることができます。外部クラスは、外部クラスを非公開にする場合には当てはまりません。