2010-05-23 24 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返回。 (當你需要它時,你可以將它放回原處)