継承におけるアクセス修飾子
メニューを表示するにはスワイプしてください
アクセス修飾子は、オブジェクト指向プログラミング、特に継承において重要な役割を果たします。これらは、基底クラスのメンバー(属性やメソッド)が派生クラスからどのようにアクセスできるかを決定します。これらの修飾子を理解することは、効果的なクラス設計やデータのカプセル化・整合性の維持に不可欠です。
継承のアクセス種別
クラスは他のクラスから派生することができます。派生クラスは基底クラスからメンバーを継承しますが、これら継承されたメンバーのアクセス可能性は、基底クラスで使用されているアクセス修飾子と継承の種類の両方によって決まります。
| Base Class public | Base Class protected | Base Class private | |
|---|---|---|---|
public | Public in Derived Class | Protected in Derived Class | Not Accessible |
protected | Protected in Derived Class | Protected in Derived Class | Not Accessible |
private | Private in Derived Class | Private in Derived Class | Not Accessible |
public.cpp
protected.cpp
private.cpp
12345class Derived : public Base { // publicMember is public // protectedMember is protected // privateMember is not accessible };
アクセス制御と継承のまとめ
オブジェクト指向の継承において、基底クラスのprivateメンバーは派生クラスからアクセスできず、変更や取得が防止されます。Protectedメンバーはサブクラス内でのみアクセス可能であり、publicメンバーは外部からアクセスできます。以下のコードスニペットでこれを試すことができます。
main.cpp
1234567891011121314151617181920class Base { public: int publicAttribute; protected: int protectedAttribute; private: int privateAttribute; }; class PublicDerived : public Base {}; class ProtectedDerived : protected Base {}; class PrivateDerived : private Base {}; int main() { PublicDerived obj1; ProtectedDerived obj2; PrivateDerived obj3; }
注意
Protected メンバーは、派生クラスおよびさらに派生したクラス内でアクセス可能であり、private と public の要素の中間的な役割を果たす。
**コンストラクタとデストラクタは、派生クラスのオブジェクトに対して自動的に呼び出され、リソースの初期化と解放を確実に行う。**これらの基底クラス要素に直接アクセスするには、コンストラクタとデストラクタを public として宣言する必要がある。
すべて明確でしたか?
フィードバックありがとうございます!
セクション 4. 章 2
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください
セクション 4. 章 2