web-dev-qa-db-ja.com

オブジェクト指向プログラミングのパブリック、プライベート、および保護とは何ですか?

オブジェクト指向プログラミングのパブリック、プライベート、および保護とは何ですか?

80

それらはアクセス修飾子であり、実装に役立ちます カプセル化 (または情報隠蔽)。これらは、定義されているフィールドまたはメソッドにアクセスする他のクラスをコンパイラに指示します。

private-現在のクラスのみがフィールドまたはメソッドにアクセスできます。

protected-このクラスの現在のクラスとサブクラス(および場合によっては同じパッケージクラス)のみがフィールドまたはメソッドにアクセスできます。

public-任意のクラスがフィールドを参照したり、メソッドを呼び出したりできます。

これは、これらのキーワードがクラス定義内のフィールドまたはメソッド宣言の一部として使用されることを前提としています。

137
Ben S

これらは実際には概念ではなく、C++やJavaなどの一般的な言語で(わずかに異なるセマンティクスで)発生する傾向がある特定のキーワードです。

基本的には、クラスがメンバー(フィールドまたは関数)へのアクセスを制限できるようにすることを目的としています。アイデアは、1つのタイプが別のタイプでアクセスを許可されるほど、依存関係が少なくなるということです。これにより、アクセスするオブジェクトは、それを参照するオブジェクトに影響を与えることなく、より簡単に変更できます。

大まかに言って、パブリックとは全員がアクセスできることを意味し、プライベートとは同じクラスのメンバーだけがアクセスできることを意味し、プロテクトとはサブクラスのメンバーも許可されることを意味します。ただし、各言語はこれに独自のものを追加します。たとえば、C++では非公開で継承できます。 Javaには、デフォルト(パッケージ)アクセスレベルもあり、内部クラスなどに関するルールがあります。

4
Uri

3つはすべて、クラスで使用されるアクセス修飾子とキーワードです。パブリックで宣言されたものはクラス内またはクラス外のオブジェクトで使用できますprotectedセクションの下で定義されたものはすべて、クラスとその派生クラスで使用できます。

4
monica

パブリックアイテムは、他のクラスからアクセスできるアイテムです。あなたはただそれがどんなオブジェクトであるかを知る必要があり、あなたはそれにアクセスするためにドット演算子を使うことができます。保護とは、クラスとそのサブクラスが変数にアクセスできることを意味しますが、他のクラスにはアクセスできません。変数で何かを行うにはゲッター/セッターを使用する必要があります。プライベートとは、そのクラスのみが変数に直接アクセスできることを意味し、他のすべてはそのデータにアクセスまたは変更するためのメソッド/関数を必要とします。お役に立てれば。

1
mnuzzo

要約すると、オブジェクト指向プログラミングでは、すべてがクラスとオブジェクトにモデル化されます。クラスにはプロパティとメソッドが含まれます。パブリック、プライベート、および保護されたキーワードは、他のクラスまたは他の.dllまたは他のアプリケーションからクラスのこれらのメンバー(プロパティとメソッド)へのアクセスを指定するために使用されます。

0
Zaki