2009-08-11 9 views
20

インターフェイスのプロパティを宣言せずに、そのメソッドのget-setメソッドを宣言できますか?私は、実装者がダブルを返す、というプロパティ値を持つ必要がありますが、それはプライベートフィールドまたは関数から結果を返す場合、私は本当に気にしないことを述べるたいインターフェイスとプロパティ

IValue = interface 
    property value: double; 
end; 

:のようなもの。

可能であれば、それを読み書き可能または読み込み専用として宣言できますか?

+3

これは私がデルファイを憎むことです。:D。 –

+0

他にもたくさんの理由がありますか?実際、私はDelphiをかなり好きでしたが、今は私にとっては閉鎖された章です。 – Vegar

答えて

30

いいえインターフェイスは関数テーブル(基本的には単純な仮想メソッドテーブル)として実装され、コンパイラはそのプロパティをマップする関数があることを知る必要があります。インターフェース上でプロパティーを宣言することはできますが、フィールドではなくゲッター/セッター値としての機能を持たなければなりません。ただし、読み取り専用または書き込み専用にすることはできます。

6

インターフェイスのプロパティを操作する場合は、プロパティをリーダー/ライターのショートカットと見なしてください。ショートカットを満たすには1つだけ必要です。それ以外の場合は何も指しません。

+4

はい。実際、プロパティの宣言は、あなたの便宜のためだけに存在します。プロパティを持つインターフェイスを作成し、その関数を実装するクラスに置くが、プロパティを宣言しない場合は、そのクラスはうまくコンパイルされます。 –

関連する問題