如何从重写方法返回不同类型?

时间:2010-01-13 21:17:03

标签: actionscript-3

我正在使用一个名为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实例?

1 个答案:

答案 0 :(得分:3)

从技术上讲,覆盖方法时无法更改签名。不过,在你的情况下,这不是一个大问题。您只需在调用克隆方法后将结果对象强制转换为Bin类型。