pyscripter 719 Posted 17 hours ago The following will not compile (error: class property accessor can be a class field or a static class method) : TTest = class private class function GetName: string; virtual; abstract; public class property Name: string read GetName; end; whilst the following does: TTest = class private class function GetName: string; virtual; abstract; public property Name: string read GetName; end; My question is that since you can have virtual class methods, why not properties that behave accordingly? In SmallTalk, the first object oriented language, you have a distinction between: instance variables (aka properties) class variables (aka class properties - one per class including subclasses) class instance variables (one per class, subclasses can change the value) Share this post Link to post
Vincent Parrett 807 Posted 9 hours ago Class property Getter/Setters must be static, however delphi doesn't allow virtual abstract static methods. I don't see a good reason for this, so it's likely technical or an oversight. 1 Share this post Link to post
Uwe Raabe 2094 Posted 8 hours ago 46 minutes ago, Vincent Parrett said: I don't see a good reason for this Static class methods miss the implicit Self parameter, which holds the current type called. They are quite similar to global procedures/functions and therefore they cannot be virtual - there is just no VMT available. It is the same reason why static class methods cannot call virtual methods. 2 1 Share this post Link to post
pyscripter 719 Posted 7 hours ago (edited) @Uwe Raabe Sure but why can't you have a class property that has virtual class method accessor. It is just "syntactic sugar". You call the virtual class method to get the value. Edited 7 hours ago by pyscripter Share this post Link to post