|
|
1
1
AS3不允许您进行重载(多个具有相同名称的函数,由返回类型或参数类型区分)只重写(子类可以替换基类实现)。 例如
是名为foo的函数的重载-不能在actionscript中执行此操作。在某种意义上,接口比重载更接近于重写,因为您“继承”了接口。
你要做的是把这两个概念混合起来。您想重载一个试图重写的接口。正如Fredrik的文章所显示的那样,即使在支持重载的语言中(其中as3不是一种语言),您也常常不能同时执行这两种操作。接口强制您具有具有精确签名的函数:
如果您正在寻找类型安全性,则在编译时无法获得它,但如果您在调用方检查返回类型,则可以在运行时获得它。 例如
我也希望能在
|
|
|
2
1
我对actionscript没有经验,因此这可能是一个可行的解决方案,也可能不是,但在C中,我通常这样做:
换句话说,我创建了一个“类型化”克隆方法(它不实现inteface,因为它在返回类型上有所不同)。然后我显式地实现接口方法,它将调用类型化克隆方法并返回结果。这是合法的行动,因为
|
|
3
0
继承的克隆方法总是以超级类作为返回类型。例如,所有事件类都重写
|
|
|
nabster023 · 拉伸和旋转电影剪辑而不失真 8 年前 |
|
|
BadmintonCat · 获取数组排序的索引 8 年前 |
|
|
Dimentio · 无限循环(动作脚本3) 8 年前 |
|
|
steph45 · 它们是一种在数组中找到最接近0的数字的方法吗? 8 年前 |
|
|
AeroKLiam · AS3-使用组合框进行真/假测验 8 年前 |