Можно ли иметь свойство с открытым и защищенным сеттерами?
У меня есть следующий код:
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;
, но я разделил его, чтобы получить более подробную информацию об ошибках компилятора.
Я не понимаю, как свойство будет считаться доступным только для чтения в том же классе. Я тоже не понимаю, как это недоступно.
Если я сделаю защитное поле, метод получения и установки полностью защищенным, он компилируется, но это не тот результат, которого я хочу; Я нуждаюсь в здоровье, чтобы быть читаемым снаружи.