Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 如何用强制转换替换类的实例,而对它的所有引用仍然有效_Actionscript 3_Actionscript_Casting - Fatal编程技术网

Actionscript 3 如何用强制转换替换类的实例,而对它的所有引用仍然有效

Actionscript 3 如何用强制转换替换类的实例,而对它的所有引用仍然有效,actionscript-3,actionscript,casting,Actionscript 3,Actionscript,Casting,假设我有很多“Item”的实例。 稍后,我想将其中一些更改为“SpecialItem”,它扩展了“Item” 我是否可以用SpecialItem实例替换Item实例,而不必更新对Item旧实例的所有现有引用 …所以我想 这=这是特殊的 但当然,你不能用“这个”来做这件事;) 不,你不能这样做。 但您可以使用以下构造: class Link { private var _link:*; public get link(){} public set link... } 和用户li

假设我有很多“Item”的实例。 稍后,我想将其中一些更改为“SpecialItem”,它扩展了“Item”

我是否可以用SpecialItem实例替换Item实例,而不必更新对Item旧实例的所有现有引用

…所以我想 这=这是特殊的 但当然,你不能用“这个”来做这件事;)

不,你不能这样做。 但您可以使用以下构造:

class Link {
   private var _link:*;
   public get link(){}
   public set link...
}

和用户link.link来获取项目,link.link=new SpecialItem()来设置新值。

您只能向后或“向上”继承链。比如:

var item:Item = mySpecialItem as Item;
如果您需要更高级的运行时交换功能,请考虑使用组合而不是继承,例如,将项目引用为接口实例而不是类实例


然而,正如@IronBCC所说,如果你只是想交换属性,你可以通过公开属性来做到这一点。

你的类的实例应该根据你的需要进行专门化。啊,这是一个非常简单但非常有用的建议!tnx!