2010-01-13 7 views
0

J'étend le Rectangle de classe AS3 avec une classe appelée Bin. Je veux substituer la méthode clone() Rectangle avec une méthode qui retourne un objet Bin, pas un objet Rectangle. Si j'essaie de remplacer la méthode clone mais que je spécifie Bin comme type de retour, j'obtiens une erreur de remplacement # 1023: Incompatible. Voici ma classe Bin:Comment renvoyer un type différent de la méthode substituée?

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

    } 

} 

Cette classe fonctionne, mais quand j'utilise la méthode clone() pour créer une nouvelle instance Bin, je reçois des erreurs de type lorsque je tente d'utiliser les méthodes Bin sur la nouvelle instance.

Comment remplacer override() et envoyer une instance Bin réelle?

+1

Vous pouvez le convertir en 'Bin' après le clonage. –

Répondre

3

Techniquement, vous ne pouvez pas modifier la signature lorsque vous remplacez une méthode. Dans votre cas, cependant, ce n'est pas un gros problème. Il suffit de lancer l'objet résultant pour taper Bin après avoir appelé la méthode clone.

+0

Merci, c'est ce que je pensais. – wpjmurray

Questions connexes