Salut !
je comprend pas la différence entre 'abstract' et ' virtual'
merci en avence
Salut !
je comprend pas la différence entre 'abstract' et ' virtual'
merci en avence
bonjour, j'espère que ça va éclairer ta lanterne, j’ai trouvé c’est définitions dans le help de delphi7
Une méthode est parfois déclarée abstract dans un composant Delphi. Dans la bibliothèque de composants, les méthodes abstraites se produisent habituellement dans les classes dont les noms commencent par “custom”, comme dans TCustomGrid
. De telles classes sont elles-mêmes abstraites, au sens où elles ne servent qu'à la dérivation de classes descendantes.
Bien que vous puissiez créer un objet instance d'une classe contenant un membre abstrait, ce n'est pas recommandé. L'appel du membre abstrait entraîne une exception EAbstractError.
La directive abstract est utilisée pour indiquer des parties de classes qui doivent être surfacées et définies dans des composants descendants ; cela force les écrivains de composants à redéclarer le membre abstrait dans des classes descendantes avant que des instances actuelles de la classe puissent être créées.
Les méthodes virtuelles emploient un mécanisme de répartition plus compliqué et plus souple que les méthodes statiques. Une méthode virtuelle peut être redéfinie dans des classes descendantes, mais est toujours appelée dans la classe ancêtre. L'adresse d'une méthode virtuelle n'est pas déterminée lors de la compilation ; à la place, l'objet où la méthode est définie donne l'adresse lors de l'exécution.
Pour qu'une méthode soit virtuelle, ajoutez la directive virtual après la déclaration de la méthode. La directive virtual crée une entrée dans le tableau de méthode virtuelle, de l'objet, ou VMT, qui contient les adresses de toutes les méthodes virtuelles d'un type objet.
Lorsque vous dérivez une nouvelle classe d'une classe existante, la nouvelle classe a son propre VMT, qui comprend toutes les entrées provenant du VMT de l'ancêtre plus toutes les méthodes virtuelles supplémentaires déclarées dans la nouvelle classe.
bonne journée
Salut.
Est ce que tu peux dire ce que tu ne comprends pas, car l'aide de Dephi est très clair la dessus.
cf Aide Delphi :
Methode Virtuelle
Donc c'est grandement utile si tu fais de l'héritage de classe.Les méthodes virtuelles, à la différence des méthodes statiques, peuvent être surchargées dans les classes dérivées. Quand une méthode surchargée est appelée, c'est le type réel (à l'exécution) du type de classe ou d'objet utilisé dans l'appel de la méthode, et non pas le type déclaré de la variable, qui détermine l'implémentation activée.
Methode Abstraite
Une méthode abstraite est une méthode virtuelle ou dynamique n'ayant pas d'implémentation dans la classe où elle est déclarée. Son implémentation est déléguée à une classe dérivée. Les méthodes abstraites doivent être déclarées en spécifiant la directive abstract après virtual ou dynamic. Par exemple :
procedure FaireQuelquechose; virtual; abstract;
Vous ne pouvez appeler une méthode abstraite que dans une classe ou une instance de classe dans laquelle la méthode a été surchargée.
On progresse .....
Moi déja mon probleme c'est que je n'ai pas l'aide Delphi7 en français
comprends-tu virtual ?, abstract ça veux juste dire que ce n'est pas défini dans la classe courante.
exemple :
ici TForme ne sait pas calculer sa surface vu qu'il ne sait pas ce qu'il est...on pourrait mettre une méthode vide ou une méthode qui raise une exception...mais Abstract le fait pour nous. De plus, lors de la compilation, un warning nous indique si un dérivé de TForme ne surchage pas la fonction Surface alors qu'ils devraient tous les faire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 type TForme = class function Surface:Single; virtual; abstract; end; TRectangle = class(TForme) function Surface: Single; override; end;
Notons également que dans du code Delphi antérieur à la version ? (je sais plus) les interfaces étaient déclarées comme des classes dont toutes les méthodes était abstraites, c'est ensuite que Borland a introduit la notion d'Interface (IUnknown, etc..) dans Delphi...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager