2009-03-07 9 views
1

En ActionScript 3.0, je souhaite étendre ClassA et implémenter InterfaceB. Le problème vient quand il y a une propriété 'data' dans ClassA et Interface B, mais de type différent. Je l'ai écrit,La classe ActionScript étend et implémente la propriété getter/setter du même nom mais de type différent

public class MyClass extends ClassA implements InterfaceB { 
    private var _data:Object; 

    public function get data():Object { 
     return _data; 
    } 

    public function set data(value:Object):void { 
     _data = data; 
    } 
} 

Flex Builder ne compilera pas et me demande de passer outre les méthodes getter/setter comme ils sont définis dans ClassA, mais redéfinissant la propriété de données ClassA est pas ce que je veux. Et même si j'ajoute override aux deux méthodes, le compilateur se plaint de la substitution incompatible, car la propriété data de ClassA est de type String.

Répondre

1

Cela n'est pas possible dans ActionScript 3.0. La meilleure chose à faire est de taper sur Object ou une interface les différents types de données partagent et ajoutent des assertions dans les setters des classes dérivées.

Questions connexes