掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
クラスの継承についてわからないことがあります (ID:34402)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> ではTclassBのインスタンスで、TClassAのプロパティHOGEを使用したい場合は、 > TClassB.HOGE := TClassA.HOGE; > とするしかないのですね。 そんなことはありません。TClassBのインスタンスは同時にTClassAのインスタンスでもあり、 何もしなくてもTClassAが持っているものをすべて使えます。 var A: TClassA; B: TClassB; B := TClassB.Create; A := B; // キャストは要らない とした場合に A.value := HOGE; B.value := HOGE; どちらでも同じ変数に値が設定されますし、 A.CheckValue(); B.CheckValue(); どちらでも同じメソッドが呼び出されます。 同じですから、わざわざAに代入し直すといった手間をかける必要はないわけです。 これだけだと「同時にTClassAのインスタンスでもある」ということの メリットが感じられないかもしれませんが、例えば procedure nantoka(a: TClassA); のようにTClassAのインスタンスを要求する関数に nantoka(B); とTClassBのインスタンスを渡してもちゃんと動作します。 とにかく上でも言われているように、こうした根本的な話はとてもここで説明しきれるものではないし せっかく説明してもらっても誤った理解で納得してしまう危険性が高いので、 もう少しオブジェクト指向の基本を学習されてからの方がよいと思います。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.