在AS3.0 中。派生类转化为基类以后。为什么基类声明的对象能调用派生类中的方法或属性呢
var mc :MovieClip = new MovieClip();
mc.x=50;
mc.fun1();
var obj :Object = mc;
obj.fun1();
obj.x=50;
尽然不报错
但在C# 或JAVA中这样写是不行的。
例如C# 中
(obj as MovieClip).x=50;
为什么AS 3 中那样写不会报错呢
在AS3.0 中。派生类转化为基类以后。为什么基类声明的对象能调用派生类中的方法或属性呢
var mc :MovieClip = new MovieClip();
mc.x=50;
mc.fun1();
var obj :Object = mc;
obj.fun1();
obj.x=50;
尽然不报错
但在C# 或JAVA中这样写是不行的。
例如C# 中
(obj as MovieClip).x=50;
为什么AS 3 中那样写不会报错呢
运行的时候应该有错误吧?
因为AS貌似不是一款真正的编程工具,因此可能语法检查在运行期间,而不是编译期间了。类似目前NET4.0中dynamic关键词一样,编译没有错误,但是运行会自动反射实例查找对象的。