Comment empêcher une fonction/procédure dans une superclasse d'être remplacée dans une sous-classe dans Delphi (2007)? Je veux le marquer pour qu'il ne puisse pas être modifié, je crois qu'il y a un mot-clé final mais je ne peux pas trouver la documentation pour cela, donc je ne suis pas sûr à 100% que c'est ce dont j'ai besoin.Arrêt d'une fonction d'une substitution dans Delphi
8
A
Répondre
16
Le mot-clé est final
comme vous le pensiez. Voir http://dn.codegear.com/article/34324 et http://blogs.teamb.com/rudyvelthuis/2005/05/13/4311. Vous pouvez également marquer votre classe comme scellée pour empêcher quiconque d'en hériter. Vous avez besoin d'une version Delphi supérieure à 7.
type
TSomeClass = class
protected
procedure SomeVirtualMethod; virtual;
end;
TOtherClass = class(TSomeClass)
protected
procedure SomeVirtualMethod; override; final;
end;
9
Vous avez raison - c'est "final". Cet extrait le montre. (De l'un des livres de Marco Cantu)
type
TDeriv1 = class (TBase)
procedure A; override; final;
end;
TDeriv2 = class (TDeriv1)
procedure A; override; // error: "cannot override a final method"
end;
Compiling donne:
[Pascal Error] Unit1.pas(11): E2352 Cannot override a final method
Une chose qui m'a surpris: Cette fonctionnalité est prise en charge dans Delphi Win32, pas seulement Delphi pour .NET