2010-05-23 41 views
0

对于定制派生类 “Vector2” 从flash.geom.Point,试图覆盖克隆()方法(类似于的add()减法()方法时这将返回类型本身),它总是会抱怨不兼容的重写'因为返回类型已从“”更改为“Vector2”。重写现有AS3类

import flash.geom.Point; 

public class Vector2 extends Point 
{ 
    //Constructor is good 
    public function Vector2(x:Number = 0, y:Number = 0) 
    { 
     super(x,y); 
    } 

    // Error: Incompatible overriding 
    override public function clone():Vector2 //return type has to be "Point" 
    { 
     return new Vector2(this.x , this.y); 
    } 
} 

如何才能正确再利用/覆盖由超类提供的方法的目的是为了建立我们自己的一个(例如:新clone1()方法),或干脆我们就不能呢?

谢谢。

回答

1

你不能,因为重写你必须保持相同的功能签名。 好消息是,既然你的'Vector2'类是一个Point,你可以有一个函数创建一个Vector2对象并将它作为一个Point返回。 (当你需要它时,你可以将它放回原处)