「Cpp クラス 継承 アクセス指定子」の版間の差分
(ページの作成:「C++に戻る <table class="mbox-small" style="border:1px solid #aaa; background-color:#f9f9f9; width:22em;" id="RealTitleBanner"> <tr> <td style="width:1px;"></td> <td class="mbox-text plainlist" style="">本来の表記は「<b><span id="RealTitle" style="font-size:large;">C++ クラス 継承 アクセス指定子</span></b>」です。この記事に付けられた題名は{{記事名の制約}}から不正確なものとなっ…」) |
|||
11行目: | 11行目: | ||
<br /> | <br /> | ||
== '''クラス 継承 アクセス指定子''' == | == '''クラス 継承 アクセス指定子''' == | ||
継承におけるアクセス指定子は、基底クラスから派生クラスに対して、メンバのアクセス権を制御するためのものです。C++では、3つのアクセス指定子が存在します:public、protected、およびprivate。それぞれのアクセス指定子には、基底クラスからの派生クラスへのメンバの影響が異なります。 | |||
'''1.public継承:''' | |||
public継承では、基底クラスのpublicメンバは、派生クラスでpublicメンバとして継承されます。 | |||
基底クラスのprotectedメンバは、派生クラスでprotectedメンバとして継承されます。 | |||
基底クラスのprivateメンバは、派生クラスではアクセス不可能です。 | |||
<syntaxhighlight lang="cpp"> | |||
class Base { | |||
public: | |||
int publicMember; | |||
protected: | |||
int protectedMember; | |||
private: | |||
int privateMember; | |||
}; | |||
class Derived : public Base { | |||
// publicMemberはそのまま継承される | |||
// protectedMemberもprotectedとして継承される | |||
// privateMemberは継承されない | |||
}; | |||
</syntaxhighlight> | |||
'''2.protected継承:''' | |||
protected継承では、基底クラスのpublicメンバは、派生クラスでprotectedメンバとして継承されます。 | |||
基底クラスのprotectedメンバは、派生クラスでprotectedメンバとして継承されます。 | |||
基底クラスのprivateメンバは、派生クラスではアクセス不可能です。 | |||
<syntaxhighlight lang="cpp"> | |||
class Base { | |||
public: | |||
int publicMember; | |||
protected: | |||
int protectedMember; | |||
private: | |||
int privateMember; | |||
}; | |||
class Derived : protected Base { | |||
// publicMemberはprotectedとして継承される | |||
// protectedMemberもprotectedとして継承される | |||
// privateMemberは継承されない | |||
}; | |||
</syntaxhighlight> | |||
'''private継承:''' | |||
private継承では、基底クラスのpublicメンバもprotectedメンバも、派生クラスではprivateメンバとして継承されます。 | |||
基底クラスのprivateメンバは、派生クラスではアクセス不可能です。 | |||
<syntaxhighlight lang="cpp"> | |||
class Base { | |||
public: | |||
int publicMember; | |||
protected: | |||
int protectedMember; | |||
private: | |||
int privateMember; | |||
}; | |||
class Derived : private Base { | |||
// publicMemberはprivateとして継承される | |||
// protectedMemberもprivateとして継承される | |||
// privateMemberは継承されない | |||
}; | |||
</syntaxhighlight> | |||
*アクセス指定子は、基底クラス内でのメンバのアクセス範囲を指定し、それが派生クラスでどのように継承されるかを制御します。 | |||
*public継承が一般的で、基底クラスのpublicメンバは派生クラスでもpublicメンバとして使えるようになります。 | |||
*protectedやprivate継承は、特定のケースで利用されることがありますが、基本的には注意して使う必要があります。 | |||
*アクセス指定子は、クラスのカプセル化(隠蔽)の原則を守り、プログラムの保守性と拡張性を向上させるのに役立ちます。 | |||
[[C PlusPlus#C++からの技術|C++]]に戻る | [[C PlusPlus#C++からの技術|C++]]に戻る |
2024年2月27日 (火) 18:07時点における版
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は継承されない
};
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++に戻る