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

Composants VCL Delphi Discussion :

inherited; or not inherited; ?


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif
    Homme Profil pro
    Analyste-programmeur Delphi
    Inscrit en
    Décembre 2003
    Messages
    490
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Analyste-programmeur Delphi

    Informations forums :
    Inscription : Décembre 2003
    Messages : 490
    Par défaut inherited; or not inherited; ?
    Bonjour à tous,

    Peut-être quelqu'un pourra-t-il m'éclaircir à ce propos :
    Quand je surcharge une procédure dans un composant, mettons la procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer)
    par exemple,

    J'ai remarqué que si je mets simplement
    ça marche, mais si je mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    inherited MouseUp(Button, Shift, X, Y);
    ça marche aussi.

    Je suppose que c'est la même chose, mais quelqu'un pourrait-il m'en assurer s'il vous plaît ? (Sait-on jamais...)

    Merci d'avance, et excusez pour le dérangement si c'est la même chose.

  2. #2
    Membre Expert
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Par défaut
    inherited te permet d'appeler une méthode du même nom héritée de la classe parente. Si par exemple, tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    constructor TMaclasse.create;
    begin
     inherited; //ici pas de soucis c'est la méthode create de l'ancêtre qui est appelée et qui porte le même nom.
    end;
    sinon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    constructor TMaclasse.create(paramètres....);
    begin
     inherited; //là ça plante...-->create(paramètres....) n'existe pas dans l'ancêtre
    end;

    et tu dois faire inherited create pour appeler le create de la classe parente.

    S'il n'y a pas de surcharge de ta méthode, inherited suffit...

  3. #3
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 932
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 932
    Par défaut
    C'est bien la même chose .

    Il y a cependant certains cas où la déclaration complète est obligatoire:

    1. La méthode n'a pas le même nom,
    2. Les paramètres diffèrent,
    3. C'est une fonction et on souhaite récupérer son résultat.

  4. #4
    Membre Expert Avatar de guillemouze
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    876
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 876
    Par défaut
    et il y a une difference : si ta methode de la classe mere est virtual abstract, alors "inherited" sera tout simplement ignorée, alors que "inherited MaProcedure" provoquera une EAbstractError

  5. #5
    Inactif
    Homme Profil pro
    Analyste-programmeur Delphi
    Inscrit en
    Décembre 2003
    Messages
    490
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Analyste-programmeur Delphi

    Informations forums :
    Inscription : Décembre 2003
    Messages : 490
    Par défaut
    Andnotor a bien compris ma question et j'ai ma réponse.
    Merci à Archimède pour l'avoir expliquée et à guillemouze pour ta remarque. Je digère tout ça...

    L'héritage est un des nombreux sujets sur lesquels je n'ai jamais trouvé d'ouvrage explicite et exhaustif en Delphi, malgré tous les livres qu'on peut trouver sur l'outils.

    D'ailleurs peut-être en connaissez-vous un qui traite du sujet, mais j'insiste : sur delphi, même payant (je suis pt de tune...) .

    Merci à tous.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Super inherited ?
    Par pirbd dans le forum Langage
    Réponses: 4
    Dernier message: 29/11/2005, 13h17
  2. [VB.NET][WinForms Inherits][DataGrid] Utilisation des propri
    Par Misterburma dans le forum Windows Forms
    Réponses: 2
    Dernier message: 13/04/2005, 16h50
  3. [Single Table Inheritance] Documentation
    Par seb_asm dans le forum Design Patterns
    Réponses: 2
    Dernier message: 10/03/2005, 13h18
  4. Inherited et Fail
    Par WebPac dans le forum Langage
    Réponses: 12
    Dernier message: 14/09/2004, 13h09
  5. [Conception][Factory] Packages inheritance
    Par ludovic.fernandez dans le forum Général Java
    Réponses: 5
    Dernier message: 05/07/2004, 17h02

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