ホームページ > よくある問題 > 派生クラスのデフォルトの継承方法は何ですか?

派生クラスのデフォルトの継承方法は何ですか?

angryTom
リリース: 2019-08-21 13:51:30
オリジナル
13776 人が閲覧しました

派生クラスのデフォルトの継承方法は何ですか?

まず、ご質問にお答えします。派生クラスには 2 つのデフォルトの継承メソッドがあります。 class を使用して派生クラスを定義し、デフォルトの継承メソッドは private です。struct を使用して派生クラスを定義し、デフォルトの継承メソッドは public です。

推奨チュートリアル: C ビデオ チュートリアル

## 継承は、オブジェクト指向プログラミングの 2 番目の主要な機能です。新しいクラスは、既存のクラスのデータ メンバーとメンバー関数を継承し、独自の独自のデータ メンバーとメンバー関数を追加し、既存のクラスのメンバー関数を再定義できます。クラスの継承と派生を使用して、より高いレベルのコードの再利用性を実現することは、現代のソフトウェア開発の考え方と一致しています。

C 言語は、単一継承と多重継承の両方をサポートしています。単一継承は、派生クラスが 1 つの基本クラスからのみ継承することを意味し、これに対応して、多重継承は、派生クラスが 2 つ以上の基本クラスから同時に継承することを意味します。 Java は単一継承のみをサポートします。

1. 派生クラス

派生クラスの定義形式は以下のとおりです。 :

(1) 派生クラスを定義するためのキーワードは class または struct です。この 2 つの違いは、派生クラスを定義するには class を使用し、デフォルトの継承メソッドは private であり、struct を使用します。派生クラスを定義する場合、デフォルトの継承メソッドは public です。新たに追加されたメンバーのデフォルト属性もプライベート属性に対応するクラスとパブリック属性に対応する構造体です。 (2) 派生クラスに継承できない関数はコンストラクタとデストラクタの 2 種類です。

2. 3 つの継承メソッドで派生クラスの基本クラス メンバーの属性にアクセスする

継承記述子親パブリックメンバー子パブリックメンバー 子 子プライベート メンバー を使用します。簡単に理解するには、次のコードを参照してください。
      class <派生类名>:[继承方式]<基类名1>
            [,[继承方式]<基类名2>,...,[继承方式]<基类名n>]
      {
              <派生类新增的数据成员和成员函数定义>
      };
ログイン後にコピー
基本クラスのプライベート メンバー関数は、派生クラスのメンバー関数で直接アクセスできませんが、派生クラスのメンバー関数は、基本クラスを呼び出すことで継承できます。これらのメンバーに間接的にアクセスする機能。基本クラスの関数が継承され、派生クラスのパブリック メンバーのままである場合、その関数は派生クラス オブジェクトを通じて直接呼び出すことができます。
親保護メンバー 親プライベートメンバー public
r保護対象メンバー # - # 保護
- private
子プライベート メンバー -

まず、クラス メンバーのアクセス属性と関数を見てみましょう。

#アクセス属性

関数privateこのクラスのメンバー関数とフレンド関数へのアクセスのみを許可し、他の関数からはアクセスできませんprotectedこのクラスのメンバー関数とフレンド関数へのアクセスの両方を許可します。また、その派生クラスのメンバー関数へのアクセスも許可しますpublicこのクラスのメンバー関数へのアクセスを許可しますクラス外の他の関数へのアクセスも可能です。
#include "stdafx.h"
#include<iostream>
 using namespace std; 
 class Base
 {
 private:
     int priData;
 9 protected:
    int proData;
 public:
    int pubData;
 };

class D1:private Base//私有继承
 {
    void f1()
     {
        //priData=1;//基类private成员在派生类中不可直接访问
        proData=2;//基类的protected成员在派生类中为private访问属性
         pubData=3;//基类的public成员在派生类中为private访问属性
    }
 };
 class D2:protected Base//保护继承
 {
     void f2()
    {
         //priData=1;//基类private成员在派生类中不可直接访问
        proData=2;//基类的protected成员在派生类中为protected访问属性
         pubData=3;//基类的public成员在派生类中为protected访问属性
     }
 };
 
 class D3:public Base//公有继承
 {
    void f3()
     {
        //priData=1;//基类private成员在派生类中不可直接访问
         proData=2;//基类的protected成员在派生类中为protected访问属性
        pubData=3;//基类的public成员在派生类中为public访问属性
     }
 };
 
 int main()
 {
     Base obj;
    //obj.priData=1;//对象不可访问Base类中private成员
     //obj.proData=2;//对象不可访问Base类中protected成员
    obj.pubData=3;
   D1 objD1;
    //objD1.pubData=3;//private属性,不可访问
    D2 objD2;
     //objD2.pubData=3;//protected属性,不可访问
    D3 objD3;
     objD3.pubData=3;//public属性,可以访问
    return 0;
}
ログイン後にコピー
プログラムの実行結果は次のとおりです:
さて、引き続きコードを通して理解してください:

以上が派生クラスのデフォルトの継承方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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