我有一个实现 setter 的基类(“Master”)(我们称之为“a”)。还有另一个类扩展了 Master(“扩展”)并覆盖了“a”设置器。
"a" 的 getter 每次都返回一个对象的新实例,并且在 Extended 类中也被覆盖。
被覆盖的 setter 看起来像这样:
override public function set a(value:Object):void
{
doSomethingWithValue(value);
super.a = value;
doSometingExtraWithValue(value);
}
现在来看看发生的魔法:每当调用被覆盖的 setter 时,在super.a = value
被执行的那一刻,被覆盖的 getter 被无缘无故地调用。
为什么,是个问题。没有任何规则说“调用setter时调用getter”,是吗?