2010-01-13 99 views
0

我正在用名为Bin的类扩展AS3类Rectangle。我想用一个返回一个Bin对象而不是Rectangle对象的方法覆盖Rectangle clone()方法。如果我尝试覆盖克隆方法,但将Bin指定为返回类型,则会出现#1023:不兼容的覆盖错误。这是我的宾类:如何从重写的方法返回不同的类型?

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()方法创建一个新宾的实例,我得到类型错误时,我尝试使用的新实例斌方法。

如何覆盖clone()并发送实际的Bin实例?

+1

克隆后可以将其转换为“Bin”。 – 2010-01-13 21:27:54

回答

3

从技术上讲,当您重写某个方法时,不能更改签名。但就你而言,它不是一个大问题。在调用clone方法后,您只需将结果对象转换为Bin即可。

+0

谢谢,这就是我的想法。 – wpjmurray 2010-01-13 23:26:41

相关问题