我正在使用一个名为Bin的类扩展AS3类Rectangle。我想用一个返回Bin对象而不是Rectangle对象的方法覆盖Rectangle clone()方法。如果我尝试覆盖克隆方法但指定Bin作为返回类型,我得到#1023:不兼容的覆盖错误。这是我的Bin课程:
package {
import flash.geom.Rectangle;
public class Bin extends Rectangle {
public function Bin(x:Number = 0, y:Number = 0, width:Number = 0, height:Number = 0) {
super(x, y, width, height);
}
override public function clone():Rectangle {
return new Bin(x, y, width, height);
}
}
}
这个类有效,但是当我使用clone()方法创建一个新的Bin实例时,我尝试在新实例上使用Bin方法时会出现类型错误。
如何覆盖clone()并发送实际的Bin实例?
答案 0 :(得分:3)
从技术上讲,覆盖方法时无法更改签名。不过,在你的情况下,这不是一个大问题。您只需在调用克隆方法后将结果对象强制转换为Bin类型。