「Cpp クラス 継承 アクセス指定子」の版間の差分

提供:yonewiki
(ページの作成:「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>」です。この記事に付けられた題名は{{記事名の制約}}から不正確なものとなっ…」)
 
 
(同じ利用者による、間の1版が非表示)
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>
'''3.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は継承されない
};


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++に戻る