当前位置:  开发笔记 > 编程语言 > 正文

在Actionscript中作为子类进行转换

如何解决《在Actionscript中作为子类进行转换》经验,为你挑选了1个好方法。

我在ActionScript中有以下类:

public class A {
}

public class B extends A {
}

和这些变量(在另一个类中):

public var InstanceOfA:A;
public var InstanceOfB:B;

如何将A的实例转换为B类?

我试过了:

InstanceOfA = new A();
InstanceOfB = InstanceOfA as B; 
trace(InstanceOfB);

我为InstanceOfB得到了一个A类型的对象.

我也尝试过:

instanceOfB = B(InstanceOfA);

在这种情况下,我收到'Type Coercion Failed'错误.



1> Alex Jillard..:

使用铸造,您只能从更多特定的铸造.由于B扩展了A,理论上它将包含A类不包含的更具体的代码.因此,可以将B转换为A(因为B是A),但是你不能将A转换为B,因为A不是B.

用一种可能更合乎逻辑的方式来说,比如说A类是"动物"而B类是"狗".Dog是Animal的更具体的实现.

狗是一种动物,所以你可以把狗当作动物,但是你不能把动物当作狗来施展,因为不是每只动物都是狗.

希望有道理.

现在,如果您想要执行上述操作,可以让A和B都扩展Abstract基类,或者实现一个接口并将两个实例变量键入为抽象类或接口.

推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有