私の最上位クラスはTBaseDB
で、これには子孫TCommonDB
( があり、 とTCommonDB
のように複数の子孫が存在TProdDB
しますTDevDB
)。
という名前の関数を各クラス定義に作成しましょうTest1
。今のところ、ShowMessage('Some literal')
実行されているコードを表示するだけです。
クラスの型は実行時までわかりません。共通のコードが必要ですが、動作は異なります。
私が欲しいのは次のようなものです:
var
MyObj: TBaseDB;
begin
//pseudo-code...
if RadioButton1.Checked then
MyObj := TBaseDB.Create
else
MyObj := TCommonDB.create;
MyObj.Test1;
end;
これを機能させることができないようで、クラス定義にあると思います。Test1
次のように定義する必要があります。
- 変数を次のように宣言できます
TBaseDB
。 - 作成されたクラスは または のいずれ
TBaseDB
かTCommonDB
であり、 - または?であるインスタンスに応じて、適切なプロシージャが呼び出されます。
Test
TBaseDB
TCommonDB