代码之家  ›  专栏  ›  技术社区  ›  wpjmurray

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

  •  0
  • wpjmurray  · 技术社区  · 15 年前

    我在用一个名为bin的类扩展AS3类矩形。我想用返回bin对象而不是矩形对象的方法重写rectangle clone()方法。如果我尝试重写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()方法创建一个新的bin实例时,当我尝试在新实例上使用bin方法时,会得到类型错误。

    如何重写clone()并发送实际的bin实例?

    1 回复  |  直到 15 年前
        1
  •  3
  •   Gabriel McAdams    15 年前

    从技术上讲,在重写方法时不能更改签名。但在你的情况下,这不是一个大问题。调用clone方法后,只需将结果对象强制转换为bin类型。