3-Jul-97 01:13 Frank Heckenbach wrote:
- Virtual methods to be overridden must be overriden
with the "override" directive; the "virtual" directive merely creates a new method (or at least, don't reject the "override" directive in a "Class" definition)
Does this mean you have to use "virtual" for *every* method in Delphi, or what is meant by "create a new method"?
In Delphi you can declare a method 'virtual' or 'dynamic' and when you want to override it in an descendant class, you must do it with 'override' directive.
- Allow "Published" methods (or at least, don't reject the
"published" directive in a "Class" definition).
Is this the same as "public" in C++ (= visible to everyone)? I, personally, would prefer "public", "protected" (=visible only to descendants) and "private" (=visible only to the type/class itself -- BTW, BP does it a bit differently, and extend the visibility of private methods to the whole unit it's declared in. I don't see any reason or advantage of this). So, perhaps we could allow all those keywords, including "published", in any order, also possibly repeated (unlike BP).
In Delphi there are four such directives:
public - like in BP - visible for everyone private - like in BP - visible only for this unit (I don't see any advantages too) protected - visible for this class and its descendants published - same as public, but also accessible at the design time (in Object Inspector) - I don't program Delphi, but as I remember only properties were placed here.
- All classes to have the same ultimate ancestor object.
The same discussion as with objects recently... ;-) Is this really necessary (if so, for what?), or is it sufficient if all classes in a given library use the same ancestor by convention?
I think it's only needed for Delphi compatibility, where TObject is the ultimate ancestor of all objects. Perhaps another compiler switch (for Delphi compatibility)?
-- Marius Gedminas E-mail: mgedmin@pub.osf.lt WWW: http://www-public.osf.lt/~mgedmin