Ceci est une ancienne révision du document !


Création d'une Class ou d'un Object

Les modificateurs

virtual

virtual signifie que la méthode peut être redéfinie/écrasée dans une classe dérivée.

virtual ne peut pas être utilisé avec dynamic et static.

dynamic

dynamic signifie la même chose que virtual.

La différence est que contrairement aux membres virtual dont les adresses sont stockés dans une table,
les membres dynamic n'utilisent pas de tables et n'occupent pas de mémoire vive,
mais leur mécanisme de résolution est plus lent.

dynamic ne peut pas être utilisé avec virtual et static.

static

Une méthode ou une variable static est commune à toutes les instances de la classe ;

Une instance de la classe peut écrire un membre de variable statique et toutes les autres instances conserveront (et liront, en cas d'accès) la nouvelle valeur.

Pour cette raison, le compilateur ne transmet PAS le paramètre self aux méthodes statiques : ce serait un non-sens.

Les méthodes static ne peuvent pas être virtual ou dynamic.

override

Une méthode marquée override cache une méthode virtual ou dynamic.

Une classe dérivée peut implémenter sa propre version d'une méthode virtual,
mais la méthode de base est toujours disponible.

Ceci est également vrai pour les méthodes dynamic.
Cependant, vous ne pouvez pas remplacer une méthode si elle n'est pas virtual ou dynamic.

abstract

Une méthode abstract est déclarée, mais non implémentée dans la classe de base.

Les classes dérivées seront obligées de fournir leur propre implémentation.

overload

Avec la directive sur la overload, vous pouvez déclarer de nombreuses méthodes, fonctions ou procédures sous le même nom mais avec des types et des paramètres différents.

function MultiSum(a, b: integer): integer; overload;
function MultiSum(a, b: AnsiString): AnsiString; overload;

Sources et Ressources

Vous pourriez laisser un commentaire si vous étiez connecté.