SSブログ

C++ クラス -継承- [開発環境]

参考サイト

http://www.geocities.jp/ky_webid/index_old.html

http://www.s-cradle.com/developer/sophiaframework/tutorial/Cpp/inherit.html

◆継承(インヘリタンス)

クラスには継承と呼ばれるメカニズムがあり、これにより既存のクラスの再利用性が高まります。継承を使うと次のようなことが実現できます。

  • 既存クラスに機能を追加した新しいクラスを定義する。
  • 既存クラスの挙動をカスタマイズした新しいクラスを定義する。
クラスの継承による機能追加

ここに鉛筆があるとします。鉛筆には芯があり、書くたびにどんどん小さくなっていきます。これをクラスにしてみましょう。

class Pencil
{
private:
SIntN core; // 鉛筆の芯の長さ
public:
Void Write()
{
core -= 1; // 書くたびに芯が 1mm ずつ小さくなる
if (core < 0) core = 0;
}
};



 



あるとき、鉛筆の後ろに消しゴムをくっつけた新製品が売り出されました。消しゴム付き鉛筆です。消しゴム付き鉛筆は、鉛筆と同じ機能をもちながら、さらに消しゴムの機能ももっています。



このように機能が追加されたクラスは次のように定義することができます。




class ErasePencil : public Pencil
{
private:
SIntN rubber; // 消しゴムの大きさ
public:
Void Erase()
{
rubber -= 1; // 消すたびにゴムが 1 立方mm ずつ小さくなる
if (rubber < 0) rubber = 0;
}
};



class キーワードに : public Pencil を指定することで、Pencil のメンバ変数とメンバ関数を引継ぐことができます。つまり、ErasePencil はメンバ変数 core とメンバ関数 Write() をもっています。それに加えて、新しく定義したメンバ変数 rubber とメンバ関数 Erase() ももっています。したがって、次のようなコードを書くことができます。




ErasePencil pen;
pen.Write(); // Pencil クラスから引き継いだメンバ関数の呼び出し
pen.Erase(); // ErasePencil クラスで新たに定義したメンバ関数の呼び出し



 



このように、既存のクラスのメンバを引き継ぐことを継承といいます。引き継ぎの元となるクラスを基底クラス、引き継いで新しく定義したクラスのことを派生クラスといいます。「ErasePencil は Pencil の派生クラスである」とか「Pencil は ErasePencil の基底クラスである」という言い方をします


nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

Windows7でgrepを使う坊ちゃん ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。