pyscripter 721 Posted yesterday at 02:31 PM 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 19 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 19 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 721 Posted 17 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 17 hours ago by pyscripter Share this post Link to post
Uwe Raabe 2094 Posted 4 hours ago The "why" is probably caused by a specific decision taken a long time ago. The people having taken it are most likely no longer at Embarcadero, so we might not even ask them about it.. Fortunately the "why" is almost irrelevant, as you can issue a feature request for a change. Share this post Link to post