2010-05-23 8 views
0

Pour une classe dérivée personnalisée "Vector2" de flash.geom.Point, en essayant de remplacer la méthode clone () (similaire à add(), Soustraire() méthodes cela retournera le type lui-même), il se plaindra toujours de l'inversion incompatible 'parce que le type de retour a été changé de "Point" en "Vecteur2".Remplacer les classes AS3 existantes

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); 
    } 
} 

Comment pouvons-nous correctement réutilisation/remplacer les méthodes fournies par les super classe comme censé créer notre propre un (par exemple: une nouvelle méthode clone1()), ou tout simplement nous ne pouvons pas?

Merci.

Répondre

1

vous ne pouvez pas, car pour remplacer, vous devez conserver la même signature de fonction. Bonne nouvelle, puisque votre classe 'Vector2' est un point, vous pouvez avoir une fonction qui crée un objet Vector2 et le renvoie comme un point. (Et vous pouvez le jeter en arrière quand vous en avez besoin)

Questions connexes