C++のアクセス修飾子とは?public・private・protectedの違いをわかりやすく解説
データ隠蔽(Data Hiding)は、オブジェクト指向プログラミング(OOP)における重要な機能の一つです。これにより、プログラム内の関数がクラス型の内部表現に直接アクセスすることを防ぎ、クラスの内部構造を保護できます。
クラスメンバーへのアクセス制限は、クラス本体内で指定する「アクセス修飾子」と呼ばれるラベル、すなわち public、private、protected の3つのセクションによって制御されます。
デフォルトのアクセスレベル
C++では、クラスのメンバーおよびクラス自体のデフォルトのアクセスレベルは private です。アクセス修飾子を明示しない場合、メンバーは自動的に非公開として扱われます。
class Base {
public:
// publicメンバーをここに記述
protected:
// protectedメンバーをここに記述
private:
// privateメンバーをここに記述
};
3つのアクセス修飾子の違い
public(公開)
public メンバーは、クラス外からでもプログラム内のどこからでもアクセスできます。メンバー関数を介さなくても、公開されている変数の値を直接設定したり取得したりすることが可能です。
private(非公開)
private のメンバー変数や関数は、クラスの外部からアクセスすることはもちろん、参照することさえできません。privateメンバーにアクセスできるのは、そのクラス自身とフレンド関数(friend関数)だけです。
protected(保護)
protected メンバーは private メンバーと非常に似ていますが、一つ大きな利点があります。それは、派生クラス(子クラス)からもアクセスできるという点です。継承関係にあるクラス間でデータや機能を共有したい場合に特に役立ちます。
まとめ
アクセス修飾子を適切に使い分けることで、カプセル化を実現し、クラスの内部実装を外部から守ることができます。外部に公開すべきインターフェースは public に、内部状態は private または protected に配置するのが、C++における一般的な設計手法です。
-
C#のsealed(封印)修飾子とは?メソッドのオーバーライドを禁止する方法
sealed修飾子とはC#において、メソッドにsealed修飾子を付けると、そのメソッドはそれ以上オーバーライドできなくなります。つまり、継承チェーンのさらに下位にあるクラスで、同じメソッドを上書きすることが禁止されます。ただし、重要なポイントとして、sealedメソッドは必ず派生クラスに属していなければならず、かつoverrideキーワードによってオーバーライドされたメソッドである必要があります。基底クラスのメソッドに直接sealedを付けることはできないため、必ず「sealed override」という形式で使用します。コード例ここでは、ClassOneを基底クラスとし、ClassTwoと
-
【初心者向け】Javaのアクセス修飾子と非アクセス修飾子の違いを徹底解説
Javaには「アクセス修飾子」と「非アクセス修飾子」の2種類の修飾子があります。この2つは名前こそ似ていますが、役割はまったく異なります。本記事では、それぞれの種類・特徴・使い方をわかりやすく解説します。 アクセス修飾子とは アクセス修飾子は、クラス・変数・メソッド・コンストラクタに付けて、外部からのアクセス範囲(可視性)を制御するためのキーワードです。 Javaには以下の4種類のアクセス修飾子があります。 default(指定なし)アクセス修飾子を何も指定しない場合、自動的にdefaultとして扱われます。アクセスできる範囲は同一パッケージ内のみに限定されます。 publicどこからでもア