覆盖子类中的父类实例变量

时间:2014-05-29 18:46:00

标签: actionscript-3 properties override

在PHP中,覆盖子类中的类的属性是微不足道的。例如:

class Generic_Enemy {
   protected $hp = 100;
   protected $str = 5;

   //... 
}

class Boss_Enemy extends Generic Enemy {
    protected $hp = 1000;
    protected $str = 25;
}

这非常方便,因为您可以一目了然地看到子类与父类的不同之处。

在AS3中,我发现的唯一方法是通过吸气剂,这根本不是优雅的:

public class GenericEnemy {
   private var _hp:uint = 100;
   private var _str:uint = 25;

   public function get hp():uint {
      return _hp;
   }

   public function get str():uint {
      return _str;
   }
}

public class BossEnemy extends GenericEnemy {
   override public function get hp():uint {
      return 1000;
   }

   override public function get str():uint {
      return 25;
   }
}

有没有更好的方法可以与PHP方法保持一致?

具体来说:假设我正在编写一个API,让开发人员可以轻松地剥离他自己的敌人。我宁愿记录你只需要覆盖hp和str属性,而不是解释他们必须为他们希望覆盖的每个属性创建一个新的getter。这是尝试创建最干净的API并且最容易记录和维护的问题。

1 个答案:

答案 0 :(得分:2)

有时你只需编写SO问题就可以看到(显而易见的)答案:

public class GenericEnemy {
   protected var _hp:uint = 100;
   protected var _str:uint = 25;

   public function GenericEnemy(){
     //...
   }
}

public class BossEnemy extends GenericEnemy {
   public function BossEnemy(){
      _hp = 1000;
      _str = 50;

      super();
   }
}