问题起源:
现在假设你在外部要用到一个子类,需要重写父类的方法而在子类中又要使用父类原来的实现。你可能会在子类重写父类的方法,然后在需要
调用父类原来方法的地方写上super.method()。现在假设你要用到子类的子类,它也要用到原来的方法,spuer.method()就不管用了。这时候可以用namespace来给最原始的父类的方法做个标记,方便子类或是子类的子类以及xxx。。。延续下去用- -
![]()
Code
DisplayObjectOverridden.as
package
{
import flash.display.DisplayObject;
import flash.display.Sprite;
public class DisplayObjectOverridden extends Sprite
{
public function DisplayObjectOverridden():void
{
}
override public function addChild(child:DisplayObject):DisplayObject
{
//override
trace("override addChild method!");
return null
}
original function addChild(child:DisplayObject):DisplayObject
{
trace("original addChild method!");
return super.addChild(child);
}
}
}
//diff 'addChild()' in OverrideSuperClass
OverrideSuperClass.as
package
{
import flash.display.Sprite;
public class OverrideSuperClass extends DisplayObjectOverridden
{
public function OverrideSuperClass():void
{
var sp0:Sprite = new Sprite();
addChild(sp0);
trace("---------------------");
var sp1:Sprite = new Sprite();
original::addChild(sp1);
}
}
}
original.as
package
{
public namespace original;
}