https://www.petitmonte.com/bbs/answers?question_id=7254
の続きみたいなことですが。
継承がうまく使いこなせなくて困っています。
THoge1 class{
・・・
}
THoge2 class{
・・・
}
TBase class{
・・・
}
TMyClass = class(TBase)
private
FHoge :THoge1;
end;
TTest = class(TMyClass )
private
FHoge :THoge2;
end;
上記のように作成しようと思っています。
TMyClassはTBaseを継承していて、さらにそのTMyClassを継承したTTestを作成したいと考えています。
TMyClassで宣言しているFHoge :THoge1
はTTestではFHoge :THoge2としたいです。
Virtual、Overrideがエラーになってしまうので使用できない状態です。
なぜかはわかりません・・・。
とにかくTTestを使用してもTHoge1になってしまうので、どうすればTHoge2になるのかを考えています。
アドバイスお願いします。
THogeBase = class
end;
THoge1 = class(THogeBase)
end;
THoge2 = class(THogeBase)
end;
TMyClass = class(TBase)
protected
FHoge :THogeBase;
end;
FHogeの定義はTBaseの方でも良いかもしれない。
Createするときにそれぞれ
FHoge := THoge1.Create;
FHoge := THoge2.Create;
てやれば良いかと。
但し、この場合、THoge1、THoge2それぞれに独自のメソッドとか定義しててもそれは呼び出せないので、THogeBaseの方で定義しておく必要有。
ツイート | ![]() |