なぜプライベート外部クラスを宣言できないのですか?内側のプライベートクラスを持つことができるのなら、なぜ外側のプライベートクラスを持つことができないのですか...?
6 に答える
private
public
修飾子はあなたのクラスを外部からアクセスできないようにするので、これには何のabstract
利点もありませんfinal
.
注:あなたでも作ることはできませんprotected
。
あなたの質問に答えるには:
内部プライベート クラスを使用できる場合、外部プライベート クラスを使用できないのはなぜですか?
違いは、内部クラスが「クラス」アクセス レベルにあるのに対し、「外部」クラスは「パッケージ」アクセス レベルにあるということです。Oracle チュートリアルから:
クラスに修飾子がない場合 (デフォルト、package-private とも呼ばれます)、そのクラスは独自のパッケージ内でのみ表示されます (パッケージは、関連するクラスのグループと呼ばれます。これについては後のレッスンで学習します)。
したがって、package-private (修飾子を宣言しない) は、「外部」クラスを private に宣言することから期待される効果であり、構文が異なるだけです。
あなたはできる。
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 は、クラスが宣言されているクラスのみがクラスにアクセスできるようにします。クラス全体を非公開にすると、外部から誰もクラスにアクセスできなくなり、役に立たなくなります。
外部クラスを非公開にすると、外部クラスは内部クラスにアクセスできるため、内部クラスを非公開にすることができます。