覆盖函数中的对象状态更改未反映在基类函数中

时间:2013-04-02 23:34:00

标签: actionscript-3 actionscript

我认为这应该是显而易见的,但由于某些原因,这对我没有意义。

public class Foo extends Sprite
{
    protected var dict:Dictionary = new Dictionary();

    protected function subclassBehavior():void
    {
        //defined in subclass
    }
    public function accessDictionary():void
    {      
        subclassBehavior();

        var i:int = 0;
        for each(var value:Object in dict)  
        {
            i++;
        }
        trace(i);
    }
}

足够简单。

然后是子类:

public class Bar extends Foo
{
    override protected function subclassBehavior():void
    {
        dict["a"] = "b";
    }
}

然后如果我这样做:

var instance:Foo = new Bar();
instance.accessDictionary();

我希望跟踪返回1.相反,它返回0.就Foo中的任何方法而言,dict中的条目都不存在。如果我在Bar中有另一个查看dict的函数,它会看到该条目。我已经尝试在Bar中实例化字典并将其传递给Foo,更改Bar中的调用以调用Foo中更新字典等的方法,但这似乎都没有改变我的情况。

我是否需要覆盖基类中我想要反映子类中其他重写行为的任何和所有功能?

1 个答案:

答案 0 :(得分:0)

我不确定每个人是否都在使用字典。 你可以尝试

for(var key:String in dict)
{
  i++;
}