38

Java と C++ では、クラスはデフォルトでプライベートまたはパブリックですか?

4

3 に答える 3

49
  • ジャワ

    デフォルトでは、クラスの可視性はパッケージ プライベートです。つまり、同じパッケージ内のクラスに対してのみ可視です。

  • C++ :

    このクラスには、Java のように可視性が定義されていません。これらは、コンパイル ユニットに含めた場合に表示されます。

于 2012-09-09T05:43:33.117 に答える
24

Java では、最上位クラスは public または non-public のいずれかです。「プライベート」はありません。public キーワードのみを使用するか、そのままにしておくことができます。オフのままにしておくと、非公開になります。つまり、同じパッケージ内の他のクラスからのみ表示されます。

ネストされたクラス、つまり別のクラス内のクラスは、他のクラス メンバーと同様に、パブリック、パッケージ プライベート、保護、またはプライベートにすることができます。デフォルト (つまり、修飾子のないもの) は package-private で、同じパッケージ内のクラスにのみ表示されます。

編集:C++の回答を忘れたので、@ zellerの回答を参照してください(そして賛成票を投じてください)。:)

于 2012-09-09T05:44:31.613 に答える
15

JLS の §6.6.1 によると、

最上位のクラスまたはインターフェイスの型が public と宣言されていない場合、宣言されているパッケージ内からのみアクセスできます。

したがって、Java クラスはデフォルトでpackage-privateです。

ただし、これは C++ には当てはまりません。クラスには可視性がありません。クラスのメンバーだけがアクセス コントロールを持つことができます。メンバー アクセス制御の詳細については、C++11 標準の §11 を参照してください。以下は ¶1 からの抜粋です...

クラスのメンバーは、

  • private; つまり、その名前は、それが宣言されているクラスのメンバーとフレンドだけが使用できます。
  • protected; つまり、その名前は、それが宣言されているクラスのメンバーとフレンド、そのクラスから派生したクラス、およびそれらのフレンドによってのみ使用できます (11.4 を参照)。
  • public; つまり、その名前はアクセス制限なしでどこでも使用できます。
于 2012-09-09T05:45:43.717 に答える