IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ActionScript 3 Discussion :

ecraser la méthode clone() hérité de la classe parent


Sujet :

ActionScript 3

  1. #1
    Membre Expert Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Par défaut ecraser la méthode clone() hérité de la classe parent
    salut,

    j'ai une classe Vecteur2D qui fait un extends de la classe Point (flash.geom.Point) ... jusque la rien de compliqué !
    le probleme survient quand je veux avoir une méthode clone dans ma classe Vecteur2D qui me renvoie une copie du vecteur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public function clone():Vecteur2D {
    	return new Vecteur2D(super.x, super.y, this._angle);
    }
    dans ce cas j'ai cette erreur :
    1024: Neutralisation d'une fonction non marquée override. public function clone():Vecteur2D {

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public override function clone():Vecteur2D {
    	return new Vecteur2D(super.x, super.y, this._angle);
    }
    et la cette autre erreur quand je rajoute le override :
    1023: override non compatible. public override function clone():Vecteur2D {

    les 2 erreurs sont logique, il me manque la bonne façon de déclarer la méthode clone ...

    quelqu'un à la soluce ? (en gardant clone comme nom !)
    merci

  2. #2
    Rédacteur/Modérateur
    Avatar de beekeep
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2 005
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public function clone():<a href="http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/geom/Point.html" target="_blank">Point</a>
    t'es obligé d'avoir le même prototype et donc de renvoyer un objet de type Point il me semble.

  3. #3
    Membre Expert Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Par défaut
    tu me fais peur !

    j'ai mon arboresence de classe qui est comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Point -> Vecteur2D -> Vecteur3D -> VecteurClip
    et pour le clone() dans chacune des classes je vais devoir renvoyer un Point et perdre toutes les propriétés qui font ces classes ???

    j'espère que non !

    pour l'instant la seule soluce que j'ai trouvé n'est pas compatible avec mon gestionnaire, c'est faire un as Vecteur2D a chaque fois que j'appelle clone sur un objet Vecteur2D

  4. #4
    Rédacteur/Modérateur
    Avatar de beekeep
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2 005
    Par défaut
    Citation Envoyé par Lorenzo77 Voir le message
    dans chacune des classes je vais devoir renvoyer un Point et perdre toutes les propriétés qui font ces classes ???
    ben non, tous les objets d'un classe qui hérite de la classe Point sont de type Point.

    un Vecteur2D est un Point, un peu spécial.

  5. #5
    Membre Expert Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Par défaut
    je sens que je vais devoir faire un cas particulier en nommant ma méthode autrement que clone ... le problème c'est que je vais devoir gérer ce cas particulier dans mes gestionnaires d'objets.

    merde, quand je pensais tout savoir au niveau de la POO dans flash voila que je recommence a 0

  6. #6
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mars 2009
    Messages : 14
    Par défaut c'est facile
    je crois qu'il suffit d'inverser les deux mot clé override et public c'est tous


    c à d d'ecrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    override public function clone():Vecteur2D {
    	return new Vecteur2D(super.x, super.y, this._angle);
    }

  7. #7
    Membre Expert Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Par défaut
    salut zak

    tu es sur de ton info ?

    dans un override tu dois garder le même type de retour des fonctions surchargés, ce n'est pas en inversant override et public que la méthode va accepter un type différent, ce qui est mon problème, je dois donc faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    		public override function clone():Point  {
    			return new Vecteur2D(super.x, super.y, this._angle);
    		}
    a la place de ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    		public override function clone():Vecteur2D {
    			return new Vecteur2D(super.x, super.y, this._angle);
    		}
    et ensuite faire un as Vecteur2D sur le type renvoyé ce qui me crée un cas particulier

Discussions similaires

  1. Méthode clone() dans des classes qui s'étendent
    Par xenos dans le forum Langage
    Réponses: 8
    Dernier message: 13/01/2012, 14h23
  2. [POO] Ecraser une méthode d'une classe
    Par fwdavy dans le forum Langage
    Réponses: 5
    Dernier message: 22/04/2008, 18h15
  3. Réponses: 1
    Dernier message: 02/05/2006, 02h04
  4. [Ant] Utilisation de la méthode clone()
    Par Shabata dans le forum ANT
    Réponses: 1
    Dernier message: 01/12/2005, 15h01
  5. Réponses: 3
    Dernier message: 16/04/2004, 16h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo