オブジェクト指向プログラミングでパブリック、プライベート、保護されているものは何ですか?
回答:
これらはアクセス修飾子であり、カプセル化(または情報非表示)の実装に役立ちます。これらは、定義されているフィールドまたはメソッドにアクセスできる他のクラスをコンパイラーに指示します。
private
-現在のクラスのみがフィールドまたはメソッドにアクセスできます。
protected
-このクラスの現在のクラスとサブクラス(および場合によっては同じパッケージクラス)のみがフィールドまたはメソッドにアクセスできます。
public
-どのクラスもフィールドを参照したり、メソッドを呼び出したりできます。
これは、これらのキーワードがクラス定義内のフィールドまたはメソッド宣言の一部として使用されることを前提としています。
これらは実際の概念ではなく、C ++やJavaなどの一般的な言語で(セマンティクスが少し異なる)傾向がある特定のキーワードです。
基本的に、それらはクラスがメンバー(フィールドまたは関数)へのアクセスを制限できるようにするためのものです。つまり、あるタイプで別のタイプへのアクセスが許可されているほど、作成できる依存関係が少なくなります。これにより、そのオブジェクトを参照するオブジェクトに影響を与えることなく、アクセスしたオブジェクトをより簡単に変更できます。
大まかに言えば、パブリックとはすべてのユーザーがアクセスを許可されていることを意味し、プライベートは同じクラスのメンバーのみがアクセスを許可されていることを意味し、保護とはサブクラスのメンバーも許可されていることを意味します。ただし、言語ごとに独自のものが追加されます。たとえば、C ++では、非公開で継承できます。Javaでは、デフォルト(パッケージ)のアクセスレベルもあり、内部クラスなどに関するルールがあります。
上記と同じですが、定性的には:
private - least access, best encapsulation
protected - some access, moderate encapsulation
public - full access, no encapsulation
提供するアクセスが少ないほど、オブジェクトからリークする実装の詳細が少なくなります。この種のリークが少ないということは、オブジェクトのクライアントを壊すことなくオブジェクトの実装方法を変更するという点で、柔軟性が高い(別名「疎結合」)ことを意味します。これは本当に理解すべき基本的なことです。