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

时间:2011-10-26 13:16:46

标签: actionscript-3 actionscript casting

假设我有很多'Item'的例子。 后来,我想把它们中的一些改为'SpecialItem',它扩展了'Item'。

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

......所以我想这样做     this = this as SpecialItem 但是当然,你不能用'this'来做到这一点;)

2 个答案:

答案 0 :(得分:1)

不,你不能这样做。 但你可以使用这样的结构:

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

和用户link.link,获取你的Item,以及link.link = new SpecialItem(),设置新值。

答案 1 :(得分:1)

你只能向后或向上施放继承链。类似的东西:

var item:Item = mySpecialItem as Item;

如果您需要更高级的运行时交换功能,请考虑使用组合而不是继承,例如,将您的项目引用为Interfaces实例而不是Class实例。

但是,正如@IronBCC所说,如果您只是想要交换属性,可以通过公开该属性来实现。