【C++学習ノート】継承と派生の基礎概念


オブジェクト向けのプログラム設計には、抽象、パッケージング、継承、マルチステートの4つの特徴があります.その継承は私が最も重要だと思う特性であり、継承は対象向けの精華と言える.
継承の分かりやすい例を挙げると、「馬」のクラスがあり、メンバー変数には身長、身長、体重など、「食べる」、「走る」などのメンバー関数があります.今、私たちは新しいクラス「雄馬」と「雌馬」を作りたいと思っています.明らかに雄馬の雌馬は馬のすべての特徴を持っています.私たちは書き直す必要はありません.元のクラスに基づいて「性別」を増やすだけです.「この新しい特徴は、2つの新しいクラスを作成することができる.同じように、白公馬、黒公馬は、雄馬というクラスから派生することができる.つまり、雄馬のすべての特徴を継承して色を加えることができるという新しい特徴である.馬は雄馬の基類であり、雄馬は白公馬の基類であるため、基類、派生類は相対的であることがわかる.
一、派生クラスの宣言方式
先ほど挙げた例で説明します
class horse
{
public:
	void eat();
	void run();
	
private:
	float height;
	float weight;
};
class malehorse:public horse
{
private:
	char sex;			//        
};
class wh_mhorse:public malehorse
{
private:
	char color;
};
void horse::eat(){
	cout<<"horse eats grass"<<endl;
}

派生クラス宣言方式は
class派生クラス名:継承方式ベースクラス名
二、派生クラスアクセス属性
まず、継承にはpublic、protected、privateの3つの方法があります.C++を習ったばかりの頃は、protectedとprivateの属性が同じで、どうせクラス外からアクセスできないという疑問があったに違いない.ここで違いがあります.privateは「プライベート」であり、どの継承方式のベースクラスのプライベートメンバーもベースクラスにプライベートであり、派生クラスはアクセスできません.ベースクラスprotectedメンバーは継承方式によって派生クラスで異なるアイデンティティを担当します.以下、詳しく説明します.
(1)共用継承
ベースクラスの共有メンバーと保護メンバーは、派生クラスで既存のアクセス属性を維持し、プライベートメンバーはベースクラスのすべてに捨てられます.
(2)保護継承
ベースクラスの共有メンバーと保護メンバーは、派生クラスで保護メンバーになります.
(3)私有相続
ベースクラスの共有メンバーと保護メンバーは、派生クラスでプライベートメンバーになります.