在动作3中你不能改写覆盖变量,但为什么呢?你可以覆盖它的getter / setter,那有什么区别?我遇到的问题是我想在基类中定义常量,然后让子类决定每个应该是什么值。
在我的情况下,假设我有一个班级,'字符'和一个子类' BillyBob'从它延伸出来。
如果我希望Character类能够说,"我的所有子类都必须有常量' ON_SCREEN_X'和' EXPLOSION_MULTIPLIER',但他们可以给他们任何他们想要的价值。"如果它们是BillyBob中的常量,这将是很好的。但是,似乎在基类中定义的const不能在类级别设置,因为它们是const不能在任何方法中设置。 :(
答案 0 :(得分:3)
在动作3中,您无法创建覆盖变量,但为什么?
当然可以 - 在子类中更改其值?
你可以覆盖它的getter / setter,那有什么区别?
不同之处在于getter和setter是包含您可能想要在子类中更改的实现的函数,而flat值可以简单地更改。
我的所有子类都必须有常量
ON_SCREEN_X
和EXPLOSION_MULTIPLIER
,但是他们可以为他们提供他们想要的任何值。
这样做的方法是使用getter。我不确定你为什么要用常数代替这个,但我个人会做的事情是:
public class Character {
public function get explosionMultiplier():Number { return 1; }
}
public class BillyBob extends Character {
public override function get explosionMultiplier():Number { return 1.2; }
}
请注意,由于您此处仅实现了getter,因此这些属性与常量具有相似之处,因为它们是只读的。