Ver Mensaje Individual
  #6  
Antiguo 04-02-2009
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Reputación: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Hola Poyo. Como siempre un gusto.

Al menos hasta Delphi 7, el compilador no permite la declaración de constantes de clase.

Comparto la opinión de Marcelo.

Entiendo que las constantes de clase sirven para encapsular, dentro de una clase, valores fijos que pueden ser resueltos en tiempo de compilación (una manera de definir el concepto constante) y que habrán de ser utilizados principalmente por los métodos de esa clase.

Claro, para alguna rutina exterior también podrían ser útiles, pero veo que esperabas que tuvieran el mismo efecto dinámico de los métodos virtuales. No estoy seguro de que eso deba ser así, pues el comportamiento normal de un método es estático, ¿entonces por qué el comportamiento normal de una constante de clase debería ser virtual?

Creo que la solución que buscas debería hacerse con métodos clase virtuales.

Aunque claro, sería estupendo que el compilador aceptara esta forma alternativa de declarar métodos:
Código Delphi [-]
TPlaneta = class(TObject)
public
  Class Function Gravedad : Double = 0; Virtual;
end;

TTierra = class(TPlaneta)
public
  Class Function Gravedad : Double = 9.81; Override;
end;
(sin mayor implementación de los mismos).

De momento, escribir la implementación con Begin y End tampoco significa un gran esfuerzo.

Saludos.

Al González.

Última edición por Al González fecha: 04-02-2009 a las 16:39:17.
Responder Con Cita