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

Langage Pascal Discussion :

À quoi sert Inherited dans les Create et Destroy ?


Sujet :

Langage Pascal

  1. #1
    Membre averti
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Points : 337
    Points
    337
    Par défaut À quoi sert Inherited dans les Create et Destroy ?
    Bonjour,

    J'ai créé des classes personnalisées. Mais j'ai pas clairement compris le coup du Inherited...

    Pouvez-vous m'expliquer clairement à quoi sert Inherited dans les create et Destroy ? Car j'ai compris que ça hérite... Mais ça hérite de quoi, comment, quel effet ?

    J'ai lu des sujets dans la faq, mais ça ne m'a pas aidé.

    Merci de votre aide,

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 688
    Points : 13 117
    Points
    13 117
    Par défaut
    inherited appelle une méthode de la classe ancêtre. Sans autre spécification (le mot inherited seul), c'est la méthode de même nom avec les mêmes arguments.

    Constructeur/destructeur :
    Lorsqu'il y a une hiérarchie de classes, chacune peut allouer de nouveaux champs et chacune ne va s'occuper que de ce qu'elle déclare. C'est l'un des principes fondamentaux de la POO : l'héritage.
    Mais même si la hiérarchie de classes est connue, l'appel du constructeur ancêtre n'est pas implicite. C'est là qu'entre en scène inherited, c'est lui qui permet de chaîner les différentes classes.

    Le même principe s'applique dans le destructeur pour la libération des ressources.

    Il est conseillé de toujours appeler inherited dans le constructeur et le destructeur même si ça ne semble pas forcément nécessaire (exemple, TObject ne procède à aucune allocation... pour le moment ; mais dans le futur qui sait !).

  3. #3
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 611
    Points
    3 611
    Par défaut
    Petit complément : le inherited du constructeur doit être appelé en premier et c'est l'inverse au niveau du destructeur où il doit être appelé en dernier.

    Ce n'est pas une contrainte du langage, c'est plutôt une habitude / bonne pratique à prendre, surtout lorsqu'on utilise des éléments de l'ancêtre dans le constructeur/destructeur.

    Dans le cas des composants attachés à une fiche depuis le concepteur, le chargement des propriétés à partir du DFM/FMX est fait dans l'ancêtre, il est donc impératif de commencer par inherited et d'en avoir un dans le constructeur et le destructeur (lorsqu'on surcharge le destroy).

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 688
    Points : 13 117
    Points
    13 117
    Par défaut
    C'est sûr qu'on ne peut pas accéder à quelque chose qui n'est pas encore alloué comme on ne peux plus sur quelque chose déjà libéré.
    Mais lorsqu'on se limite à la classe courante il n'y a aucune contrainte, voire même une obligation d'inverser la logique.

Discussions similaires

  1. [Delphi 2009] inherited dans les exemples
    Par Just-Soft dans le forum Langage
    Réponses: 9
    Dernier message: 21/02/2014, 12h46
  2. Debutant: à quoi sert * { blabla; } dans css
    Par mouhssine84 dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 30/04/2010, 13h38
  3. [1.x] A quoi sert phing dans symfony
    Par cornnery dans le forum Symfony
    Réponses: 1
    Dernier message: 10/03/2008, 16h56
  4. A quoi sert le ~ dans latex
    Par Fox213 dans le forum Mise en forme
    Réponses: 2
    Dernier message: 13/12/2007, 18h10
  5. A quoi sert "AuthGroupFile" dans .htaccess ?
    Par Christophe Charron dans le forum Apache
    Réponses: 4
    Dernier message: 14/09/2006, 15h59

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