継承
1-8 :プログラム解説2


 解説                    / 1-1   1-2   1-3   1-4   1-5   1-6   1-7   1-9
■ TImage コンポーネントの継承

Unit1 のtype 節を見てみましょう。
class には TImage と書いてあります。

これは先程と同じく、" TCatA は、今から TImage コンポーネントを使うぞ " という意味なのです。
更に var は宣言部なので、これも簡単に言うと、"CatA は、TCatA を使っています"といった塩梅になります。



ちなみに TCatA はtype 節で TImage クラスと宣言されているので、もっと簡単に言い換えれば "Unit1 は TImage を継承しました"ということになります。
ここは継承を考える上で最も基礎的なところなので確実に覚えていくことが肝要ですね。




 解説 Unit の継承

さて、いよいよ継承の中核となる部分です。
次の図を見てください。


■ TCatA を継承するということ

一見すると上の図と同じような印象を受けるかもしれませんが、これは Unit2 のソースです。
よーく見てみましょう。
さっきは class に TImage と書いてありました。  今度は TCatA と書いてあります。





■ これが重要!

どうでしょう?
なんとなく分かってきましたか?
そうです、フォーム上でボタンを押したとき( MainUnit のソースを見てみよう)、 何も記述していなかったはずの CatB.ShowImage が呼びだされたのには、実はここに秘密があるのです。

上で書いたように、class とは、"〜のすべての能力を使うぞ" という意味です。
つまり Unit2 もここで TCatA ( Unit1 )を使うと宣言していた為に、 わざわざ ShowImage というメソッドを記述する必要もなく、Unit1の能力を使用出来ていたのですね。




■ Unit2 の継承

Unit3 についても同じような手順でソースを解析することができます。
ソースを見てみましょう。


■ TCatB の継承

どうですか? Unit2 とまったく同じになっていますね。

type では、"TCatB を使用する" との記述がなされています。
フォーム上で CatC ボタンをクリックしたイベントには、ShowImage というモジュールを参照する記述と、Timer を動かす命令しか書かれていません。
この3匹目のネコはクリックした時に鳴きます。
これは言うまでもなく、"class で TCatB を使用する" と宣言したからなのです。



トップに戻る  /  前に戻る  /  次へ