35

重複の可能性:
Java:トップレベルクラスをプライベートとして定義できるのはなぜですか?

なぜプライベート外部クラスを宣言できないのですか?内側のプライベートクラスを持つことができるのなら、なぜ外側のプライベートクラスを持つことができないのですか...?

4

6 に答える 6

25

プライベート外部クラスは、何もアクセスできないため役に立ちません。

詳細を見る:

Java: トップ レベル クラスをプライベートとして定義できるのはなぜですか?

于 2013-02-04T18:08:53.200 に答える
14

privatepublic修飾子はあなたのクラスを外部からアクセスできないようにするので、これには何のabstract利点もありませんfinal.

注:あなたでも作ることはできませんprotected

于 2013-02-04T18:07:24.410 に答える
12

あなたの質問に答えるには:

内部プライベート クラスを使用できる場合、外部プライベート クラスを使用できないのはなぜですか?

違いは、内部クラスが「クラス」アクセス レベルにあるのに対し、「外部」クラスは「パッケージ」アクセス レベルにあるということです。Oracle チュートリアルから:

クラスに修飾子がない場合 (デフォルト、package-private とも呼ばれます)、そのクラスは独自のパッケージ内でのみ表示されます (パッケージは、関連するクラスのグループと呼ばれます。これについては後のレッスンで学習します)。

したがって、package-private (修飾子を宣言しない) は、「外部」クラスを private に宣言することから期待される効果であり、構文が異なるだけです。

于 2013-02-04T18:09:53.630 に答える
4

あなたはできる。

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
}
于 2013-02-04T18:19:07.020 に答える
1

クラスを持つことはできませんが、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. したがって、「クロージャー」を使用したくない場合は、静的内部クラスを使用してください。

于 2013-02-04T18:14:21.613 に答える
0

private は、クラスが宣言されているクラスのみがクラスにアクセスできるようにします。クラス全体を非公開にすると、外部から誰もクラスにアクセスできなくなり、役に立たなくなります。

外部クラスを非公開にすると、外部クラスは内部クラスにアクセスできるため、内部クラスを非公開にすることができます。

于 2013-02-04T18:16:47.047 に答える