Actionscript Duck-typing

时间:2011-09-26 19:58:02

标签: actionscript duck-typing

我正在覆盖子类中的受保护函数。

假设我有两个课程,Apple和Fruit。 我有所有变量,这只是一个简化版本。

class FruitBasket
   protected function getRandom():Fruit
    {
        // return random piece of fruit
    }

class AppleBasket extends FruitBasket
   protected override function getRandom():Apple
    {
        // return random apple
    }

class Fruit

class Apple extends Fruit

示例很简单。问题是getRandom函数的类型取决于它自己的类型。一个人返回一个苹果,另一个返回一个水果。 当然我收到有关覆盖和强制的错误。

我尝试过返回Fruit而不是Apple,但是该对象不是Apple,因此它没有Apple特有的属性。 问题在于变形。有一个我无法改变的第三个类,它在每个对象上执行getRandom()函数,我需要苹果稍微不同。

如何覆盖Apple中的getRandom函数,以便它返回苹果,而不是水果?

2 个答案:

答案 0 :(得分:0)

这是circle-ellipse problem。我根本不会覆盖这个功能;相反,我会将该功能重命名为更具体。所以在AppleBasket中将它重命名为getRandomApple()。你的语义变得有些混乱,所以我会把事情分开并更清楚。

你不能在FruitBasket中更改函数名称太糟糕了,因为我会将其更改为getRandomFruit()以使语义更清晰。

答案 1 :(得分:0)

相当于在AS3中输入鸭子将是“*”或“对象”类型。