0

私はチュートリアルを読んでいて、そこにいるユーザーはセッターとゲッターをそのように始めていました

    function get f():Number;
    function set f(value:Number):void;

インターフェイス内で、変数内のメインファイルに保存します

    var testNode:INode;

そしてそれらを次のように参照します

    testNode.f;

特に変数が多い場合には、これは本当に便利だと思いました。プライベート値ごとに 2 つの関数を作成する代わりに。ただし、インターフェイス内で get と set をインスタンス化せずに同じことを試みた (これは必要なかったため) と、関数に本体がないというエラーが表示されます。

何故ですか?get と set をこのようにクリーンで短い方法で記述する方法はありますか? これまで私はこれらを次のように書いてきました

public function get someVar():SomeClass {
   return _someVar;
}

public function set someVar(newValue:SomeClass):void {
  _someVar = newValue;
}

しかし、いくつかのプライベート変数があると少し面倒です。

4

1 に答える 1

1

インターフェイスはクラスの単なるモデルであり、関数 (またはゲッター/セッター) の定義をスキップすることはできません。インターフェイスを実装するすべてのクラスで、getter と setter を宣言する必要があります。あなたが探しているのは拡張機能(継承)です。

クラス Mother.as をゲッターとセッターで定義する場合、Mother.as を拡張するクラス Child.as はゲッターとセッターを再定義する必要はありません。

さらに、getter と setter 内に他に何も書く予定がない場合は、パブリック変数を使用する必要があります。これらは、役に立たない get/set よりもリソースの消費が少なくなります。

于 2013-05-29T16:03:11.187 に答える