June 07, 2006

Even if it can be done by maybe mixins, I still think there could be a class variable or method that can be overridden. I suppose there is a keyword called dynamic, which is just the same as static, with the exception that it can be overridden by subclasses.

class A
static const int x = 0;
dynamic const int y = 0;

class B : A
static const int x = 10;
override dynamic const int y = 10;

void main()
A a = new A();
printf("%d\n", a.x);  // 0, in this case the constant cannot be overridden
printf("%d\n", a.y);  //10, in this case the constant is overridden

Although it could be done by mixins with a virtual function, the syntax shown above is more readable and clear. Lots of the programming languages take class variable and methods as static and non-overridden, but sometimes you might need one that should be able to override, and I think it could be implemented easily in the language feature.