On 18/02/2013 21:25, Michael wrote:
Yes, it's comes from C#.

So, there is no static for classes at module level. Good to have a msg
for it at compile-time.

import std.stdio;

public final abstract class Test
{
   static this() { writeln("in static ctor"); }
   static :
       void foo() { writeln("in static method"); }
}

void main()
{
   Test.foo();
}

public - adds a little bit of verbosity (ref
http://wiki.dlang.org/Access_specifiers_and_visibility). For now is noop.
final - adds a no inheritance.
abstract - disables non-static ctors.

right?

Technically 'abstract' doesn't disable the ctors; they would still be called by super() if you had a subclass (if you didn't use 'final'). What 'abstract' does is insist that all instances must be of some subtype, not of the class itself.

I'm sure you knew that and it's just a wording thing :)

Fun fact: in Java, it's an error to combine 'final' and 'abstract'.

Reply via email to