パブリックゲッターと保護されたセッターでプロパティを持つことは可能ですか?ActionScriptのプロパティ - パブリックゲッター、プロテクトされたセッター
public class Mob extends Sprite {
// snip
private var _health:Number; // tried making this protected, didn't work
public function get health():Number { return _health; }
protected function set health(value:Number):void {
_health = value;
}
// snip
public function takeDamage(amount:Number, type:DamageType, ... additionalAmountAndTypePairs):void {
var dmg:Number = 0;
// snip
var h:Number = this.health; // 1178: Attempted access of inaccessible property health through a reference with static type components.mobs:Mob.
this.health = h - dmg; // 1059: Property is read-only.
}
}
私はthis.health -= dmg;
を持っていたが、私はコンパイルエラーについてのより詳しい情報を得るためにそれを分割:
は、私は、次のコードを持っています。
プロパティが同じクラス内で読み取り専用とみなされる方法はわかりません。私はまた、それがどのようにアクセス不能であるかを理解していません。
私がバッキングフィールド、ゲッター、セッターをすべてプロテクトにすると、コンパイルされますが、それは私が望む結果ではありません。私は外部から読めるように健康が必要です。
+1、もう少し昨夜、グーグル・グーグルで、私は回避策なしで同様の答えを見つけました。一貫性のないAPIが好きではありませんが、言語の欠点に対処しなければならないと思います。 –