是否有可能擁有公共getter和受保護的setter屬性?動作腳本屬性 - Public Getter,受保護的安裝程序
我有以下代碼:
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;
,但我把它分解出來讓編譯器錯誤的詳細信息。
我不明白該屬性如何在同一個類中被認爲是隻讀的。我也不明白它是如何無法訪問的。
如果我使支持字段,getter和setter都受保護,它會編譯,但它不是我想要的結果;我需要健康從外部可讀。
+1,經過昨晚Google搜索後,我偶然發現了一個類似的答案,沒有解決方法。我不喜歡不一致的API,但我想我必須應付這種語言的缺點。 –