在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并且最容易记录和维护的问题。
答案 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();
}
}