是否可以拥有一个带有公共(public) getter 和 protected setter 的属性?
我有以下代码:
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 都受到保护,它会编译,但这不是我想要的结果;我需要健康才能从外部读取。
最佳答案
不可以,访问者必须具有彼此相同的权限级别。你可以让你的公众号
获取 set 函数,然后有一个 protected setHealth、getHealth 函数对。如果您愿意,您可以反转它,但关键是您有一组方法可以以公共(public)权限访问,而另一组方法可以在 protected 权限级别访问。
关于flash - ActionScript 属性 - 公共(public) Getter、 protected Setter,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7356977/