お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"RE:property の override は不可"

この発言は
#00855 佐々木@六角堂 さんのproperty の override
に対するコメントです

この発言に対し以下のコメントが寄せられています
#00860 佐々木@六角堂 さん RE:property の override は不可

こんにちは、佐々木@六角堂さん。 花井です。 佐々木@六角堂さんが示された例は、 > Inherited がプロパティにも使えるという例です。 です。 しかし、「プロパティの override の例」ではありません。 -- 実証として、 > (* TEST PROGRAM *) > > var > ADescendant: TDescendant990424; の部分を > var > ADescendant: TAncestor990424; と変更した後、実行してみてください。 例では、ADescendant 変数に TDescendant990424 型のインスタンスを 代入してから Text プロパティを設定しますが、この変更により TAncestor990424.Text プロパティが直接呼ばれるようになってしまいます。 -- Delphi で override といえば、仮想メソッドか動的メソッドに対して付加 される指令であり、作用として、そのメソッドをクラスのどの世代から呼び 出しても 末裔世代の定義が真っ先に呼び出されるようになる、こうしたもの を意味するのではないかと思います。 一方、プロパティはクラスと静的に結び付けられています。 クラスの各世代は、その世代のプロパティを直接呼び出してしまい、 子孫末裔のプロパティを呼んではくれません。 残念ながら、プロパティ自体は override と呼べるような仕組みを持っては いません。 # 基底クラスが「プロパティのアクセス指定子で示されたメソッド」を # うまく定義又は実装していれば、“実質的に override できるプロパティ” # が実現できます。けれど、これはあくまでもメソッドのつくりに拠るもので、 # クラスとプロパティの関わりは相変わらず、「静的」です。 Original document by 花井 達 氏 ID:(ZXC11543)



ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum