Cpp クラス 継承 アクセス指定子
C++に戻る
本来の表記は「C++ クラス 継承 アクセス指定子」です。この記事に付けられた題名はテンプレート:記事名の制約から不正確なものとなっています。 |
※このページではC++にのみ存在する機能として、記事タイトルがC++ クラス 継承 アクセス指定子になっています。
クラス 継承 アクセス指定子
継承におけるアクセス指定子は、基底クラスから派生クラスに対して、メンバのアクセス権を制御するためのものです。C++では、3つのアクセス指定子が存在します:public、protected、およびprivate。それぞれのアクセス指定子には、基底クラスからの派生クラスへのメンバの影響が異なります。
1.public継承:
public継承では、基底クラスのpublicメンバは、派生クラスでpublicメンバとして継承されます。 基底クラスのprotectedメンバは、派生クラスでprotectedメンバとして継承されます。 基底クラスのprivateメンバは、派生クラスではアクセス不可能です。
class Base {
public:
int publicMember;
protected:
int protectedMember;
private:
int privateMember;
};
class Derived : public Base {
// publicMemberはそのまま継承される
// protectedMemberもprotectedとして継承される
// privateMemberは継承されない
};
2.protected継承:
protected継承では、基底クラスのpublicメンバは、派生クラスでprotectedメンバとして継承されます。 基底クラスのprotectedメンバは、派生クラスでprotectedメンバとして継承されます。 基底クラスのprivateメンバは、派生クラスではアクセス不可能です。
class Base {
public:
int publicMember;
protected:
int protectedMember;
private:
int privateMember;
};
class Derived : protected Base {
// publicMemberはprotectedとして継承される
// protectedMemberもprotectedとして継承される
// privateMemberは継承されない
};
3.private継承:
private継承では、基底クラスのpublicメンバもprotectedメンバも、派生クラスではprivateメンバとして継承されます。 基底クラスのprivateメンバは、派生クラスではアクセス不可能です。
class Base {
public:
int publicMember;
protected:
int protectedMember;
private:
int privateMember;
};
class Derived : private Base {
// publicMemberはprivateとして継承される
// protectedMemberもprivateとして継承される
// privateMemberは継承されない
};
- アクセス指定子は、基底クラス内でのメンバのアクセス範囲を指定し、それが派生クラスでどのように継承されるかを制御します。
- public継承が一般的で、基底クラスのpublicメンバは派生クラスでもpublicメンバとして使えるようになります。
- protectedやprivate継承は、特定のケースで利用されることがありますが、基本的には注意して使う必要があります。
- アクセス指定子は、クラスのカプセル化(隠蔽)の原則を守り、プログラムの保守性と拡張性を向上させるのに役立ちます。
C++に戻る