MENU
コンテンツ再構築中

C++:クラスの概要(2)> クラスの継承について

C++において重要なクラスの継承についてのメモ。

INDEX

C++のクラスの継承

継承は1つのクラスが他のクラスの性質を受け継ぐための仕組み。

あるクラスを別のクラスが継承する場合、継承される側のクラスを「基本クラス」継承する側のクラスを「派生クラス」と呼ぶ。

基本クラスを継承する形式

[code]
class 派生クラス名 : アクセス指定子 基本クラス名 {

};
[/code]

※クラスの定義は最後にセミコロンを忘れないように注意する。

アクセス指定子と範囲

修飾子 説明
なし クラス内から使用可能(privateと同じ)
public 外部のクラスから使用可能
private クラス内から使用可能
protected privateと同じ(サブクラスからはpublicになる)

基本クラス

[code]
class BaseSample {
int i;
public:
void set_i(int n);
int get_i();
};
[/code]

派生クラス

[code]
class DerivedSample : public BaseSample {
int j;
public:
void set_j(int n);
int mul();
};
[/code]

クラスの継承サンプルコード

[code]
#include
using namespace std;

// 基本クラス
class BaseSample {
int i;
public:
void set_i(int n);
int get_i();
};

// 派生クラス
class DerivedSample : public BaseSample {
int j;
public:
void set_j(int n);
int mul();
};

// 基本クラスの変数iを設定
void BaseSample::set_i(int n)
{
i = n;
}

// 基本クラスの変数iの値を返す
int BaseSample::get_i()
{
return i;
}

// 派生クラスの変数jを設定
void DerivedSample::set_j(int n)
{
j = n;
}

// 基本クラスの変数iの値に派生クラスの変数jの値を乗算し返す
int DerivedSample::mul()
{
// 基本クラスの公開メンバ関数の呼び出し
return j * get_i();
}

int main(void)
{
DerivedSample obj_d;
obj_d.set_i(10);
obj_d.set_j(20);

cout << obj_d.mul(); // 200 が表示される return 0; } [/code]

まとめ

上記クラスの継承サンプルコードでは派生クラス DerivedSample の mul() から基本クラス BaseSample の get_i() を呼び出している。BaseSample の変数iへは直接アクセス出来ないようにしカプセル化を実現している。

Please share it!
  • URLをコピーしました!
  • URLをコピーしました!
INDEX