我真的对这些类型的陈述感到困惑:
这是什么意思:
施法时:
var xyz = ClassA( obj as MovieClip );
声明/定义时:
var xyz:ClassA = new SomeOtherClass();
我的意思是,在上面的相同陈述中如何使用2个不同的类?这是因为继承关系吗?
由于 诉
答案 0 :(得分:3)
var xyz:ClassA = new SomeOtherClass()
xyz被声明为具有类型ClassA,因此只有在SomeOtherClass是ClassA的子类时,此赋值才有效。如果没有,则在编译时将抛出错误。
var xyz = ClassA( obj as MovieClip )
此语句的结果是双重转换:首先,obj转换为MovieClip,然后转换为ClassA。如果这两种类型中的任何一种不在obj的类型层次结构中,则结果为null
。
除非obj不是MovieClip(在这种情况下,尝试将null
转换为ClassA将在运行时导致空指针异常),不会出现错误,因为您可以为xyz分配任何内容 - 没有变量类型是指定。