上位クラス,下位クラス,クラス階層
コンポーネント開発者のためのオブジェクト指向プログラミング:インデックス への移動
アプリケーション開発者から見ると,すべてのコントロールはプロパティ Top および Left を持っています。このプロパティは,そのコントロールのフォームでの位置を示します。この 2 つのプロパティは,共通の上位クラスである TControl から継承されていますが,アプリケーション開発者はそのようなことを意識する必要はありません。しかし,コンポーネントを作成する場合には,コンポーネントにどのクラスを継承させるか決めなければなりません。また,継承した機能を再作成することなく利用できるように,開発するコントロールが継承する機能について把握しておく必要があります。
コンポーネントの派生元となるクラスを,そのコンポーネントの直接上位クラスと呼びます。各コンポーネントの継承元は,そのコンポーネントの直接上位クラスや,直接上位クラスの上位クラスという具合になります。コンポーネントの継承元となるすべてのクラスを,そのコンポーネントの上位クラスと呼びます。この場合コンポーネントは,その上位クラスから見て下位クラスになります。
1 つのアプリケーションでは,すべての上位下位の関係が 1 つのクラス階層を構成します。階層がより下位のクラスほど多くの機能が入っています。あるクラスはその上位クラスの機能をすべて継承したうえで,新しいプロパティやメソッドを追加したり,既存のプロパティやメソッドを再定義するからです。
Delphi では,直接上位クラスを指定しなかったときは,デフォルトの上位クラスである TObject から派生します。TObject はオブジェクト階層のすべてのクラスの最上位クラスです。
どのオブジェクトからフォームを派生するかを決定する基本ルールは単純です。新しいオブジェクトに入れる内容が最も多く含まれており,さらに新しいオブジェクトに必要がない内容が一切入っていないオブジェクトを選択するようにします。オブジェクトの内容は,いつでも追加することはできますが,継承した内容を取り除くことはできないからです。