我认为这应该是显而易见的,但由于某种原因,这对我来说没有意义。
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 中更新字典的方法等,这些似乎都没有改变我的情况。
我是否需要覆盖基类中的所有功能,以反映子类中的其他覆盖行为?