継承の利用に関して


ペン  2011-02-03 00:38:29  No: 39950

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になるのかを考えています。

アドバイスお願いします。


au  2011-02-03 01:09:29  No: 39951

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の方で定義しておく必要有。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加