ホームページ > バックエンド開発 > C++ > アクセス指定子は C 継承におけるメンバーのアクセシビリティにどのような影響を与えますか?

アクセス指定子は C 継承におけるメンバーのアクセシビリティにどのような影響を与えますか?

Barbara Streisand
リリース: 2024-12-26 03:27:08
オリジナル
476 人が閲覧しました

How Do Access Specifiers Affect Member Accessibility in C   Inheritance?

継承におけるアクセス指定子について

オブジェクト指向プログラミングでは、アクセス指定子はクラス メンバーのアクセス可能性を制御するキーワードです。基本クラスから継承する場合、派生クラス内のメンバーのアクセス可能性は、継承中に使用されるアクセス指定子によって異なります。

継承の型

C は 3 つの型をサポートします。継承の:

  • パブリック継承: のパブリック メンバー基本クラスは派生クラスのパブリック メンバーになります。保護されたメンバーは、派生クラスで保護されます。
  • 保護された継承: 基本クラスのパブリック メンバーは、派生クラスの保護されたメンバーになります。保護されたメンバーは、派生クラスで保護されます。
  • プライベート継承: 基本クラスのパブリック メンバーと保護されたメンバーは、派生クラスのプライベート メンバーになります。

メンバーのアクセス ルール

アクセスに基づいて、継承中にメンバーのアクセス レベルがどのように変化するかを示します。使用される指定子:

パブリック継承と保護された継承:

  • 基本クラスのパブリック メンバーは、派生クラスでもパブリックまたは保護されたままになります。
  • 基本クラスの保護されたメンバーは、派生クラスでも保護されたままになります。 class.

プライベート継承:

  • 基本クラスのパブリックおよび保護されたメンバーはアクセス指定子を失い、派生クラスではプライベートになります。 class.

例:

class Base {
public:
    int public_member;
protected:
    int protected_member;
    int private_member; // private members are not inherited
};

class Derived1 : public Base {
public:
    void access_member() {
        // Access rules:
        public_member = 10; // allowed
        protected_member = 20; // allowed
        // private_member = 30; // not accessible
    }
};

class Derived2 : protected Base {
public:
    void access_member() {
        // Access rules:
        public_member = 10; // allowed
        protected_member = 20; // allowed
        // private_member = 30; // not accessible
    }
};

class Derived3 : private Base {
public:
    void access_member() {
        // Access rules:
        public_member = 10; // not accessible
        protected_member = 20; // not accessible
        // private_member = 30; // not accessible
    }
};
ログイン後にコピー

継承のベスト プラクティス

のアクセス指定子を選択する場合継承については、以下を考慮してくださいガイドライン:

  • 特に必要がない限り、デフォルトは private です: Private は、クラスの内部実装を保護します。
  • 派生クラスに機能を公開するには、protected を使用します。 .
  • へのアクセスが許可されるため、パブリックは控えめに使用してください
  • プライベート メンバーまたは保護されたメンバーのパブリック継承を避けます: これにより、カプセル化が壊れ、予期しない動作が発生する可能性があります。

以上がアクセス指定子は C 継承におけるメンバーのアクセシビリティにどのような影響を与えますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート