4

ここでJavaのドキュメントを読んでいて、これが私が見つけたものです:

publicprivateなどの修飾子を最初に追加することもできます。そのため、クラス宣言の最初の行が非常に複雑になる可能性があることがわかります。他のクラスが何にアクセスできるかを決定するpublicおよびprivate修飾子MyClassについては、このレッスンの後半で説明します。

privateorpublic修飾子を使用してクラスを作成できることを指定します。ただし、private修飾子を使用しようとすると、そのクラス バンドの無効な修飾子であるというエラーが表示されます: のみpublicが許可されていますabstractfinal

修飾子が役に立たないことは理解していますprivateが、Java の公式サイトにあるこのチュートリアルでは、修飾子を使用してクラスを作成できると述べているのはなぜですか? 私は何か見落としてますか?

4

10 に答える 10

15

最上位クラスは にすることはできませんprivate。ただし、ネストされたクラスはprivate.

JLSを見る

アクセス修飾子 public (§6.6) は、ローカル クラス (§14.3) または匿名クラス (§15.9.5) ではなく、トップ レベル クラス (§7.6) およびメンバー クラス (§8.5) にのみ関係します。

アクセス修飾子 protected および private (§6.6) は、直接囲んでいるクラスまたは列挙宣言 (§8.5) 内のメンバー クラスにのみ関係します。

于 2013-07-01T19:49:10.770 に答える
3

privateトップレベルのクラスを持つことはできません。内部またはネストされたクラスを持つことができます。private

privateトップレベルのクラスは、どこからでもアクセスできないため、明らかに役に立ちません。

だからこれは許される

public class MyClass {
    private class MyInnerClass {
    }
}
于 2013-07-01T19:49:40.837 に答える
1

それは間違いではありません。文言を注意深く見てください。

最初に public や privateなどの修飾子を追加することもできます-......

通常のクラスのパブリックおよびデフォルト (パッケージプライベート、修飾語なし) の可視性を持つことができます。ネストされたものは、非公開にすることも保護することもできます。

于 2013-07-01T19:51:03.787 に答える
1

"""クラスの修飾子が不正です。public、abstract、および final のみが許可されています .."""

最上位クラスは非公開にできません

プライベートクラスの名前を使用してファイルに名前を付けようとすると..

ファイルとプライベート クラスに同じ名前を使用することはできません。

クラスのみがプライベートでない場合、クラス名とファイル名は同じです..

クラスがパブリックの場合、ファイル名とクラス名は同じでなければなりません。

パブリック クラスが多数ある場合、ファイル名はパブリック クラス名にする必要があります。

于 2013-07-01T19:53:52.567 に答える
0

それらを内部クラスに使用できます。トップレベルのクラスで使用しようとしたと思われます。プライベート クラスの使用例を次に示します。

于 2013-07-01T19:49:29.467 に答える
0

.java ファイルのプライマリ クラスはプライベートであってはなりません (結局、どのように使用されるかというと、プライベートにする価値のないファイルです)。それらはプライベートにすることができます。

例えば

public class OuterClass{

    //constructors and methods of OuterClass

    private class InnerClass{
           //constructors and methods of InnerClass
    }

}
于 2013-07-01T19:49:31.793 に答える
0

プライベート クラスは許可されますが、内部クラスまたはネストされたクラスとしてのみ使用できます。

于 2013-07-01T19:49:59.343 に答える
0

privateネストされたクラスで許可されます:

public class A {
    private B b;
    private class B {} // Only class A can use this class
}
于 2013-07-01T19:51:09.390 に答える
0

常に内部クラスをプライベートとして持つことができます。

以下は完全に有効です。

public class Foo
{
    private class Bar
    {
    }
}
于 2013-07-01T19:56:42.930 に答える
0

適用可能なプライベート内部クラスを持つことができます。

于 2013-07-01T19:49:13.363 に答える