¿Y eso compila?
Como he dicho, tengo D6 y desconozco el concepto.
A como yo lo interpreto no debería permitirse declarar una misma constante en clases descendientes.
Yo lo analizo con un poco de lógica conceptual.
Un Perro es un animal, y como animal éste hereda las características comunes que le son atribuidas a todo animal. Si esto es así, Perro por tanto comparte las características de un animal más la que le son propias a un perro.
Viéndolo así, definir una constante para una clase implica que cualquier clase que herede de ésta reciba y herede la misma constante.
Cuando deseamos añadir un método a una clase cuya implementación le puede o no ser propia a cada sub-clase lo definimos como virtual; si el comportamiento debe necesariamente estar en la subclase más no en la clase lo definimos además como abstracto. Esto nos permite que luego cada clase pueda sobreescribir dicho método y ampliarlo según el contexto. En el caso del perro y los animales diríamos que Corre() es posiblemente un método abstracto, como un animal corre depende de cada uno: un perro corre de forma distinta a la de un gato, muy a pesar de que ambos poseen el mismo objetivo: moverse a mayor velocidad de un punto a otro.
Volviendo a las constantes, como clase heredera, hereda el mismo valor. Hacer uso y sobreescribir una misma constante implicaría un concepto abstracto, y esto rompe con la filosofía de una constante y el concepto de la herencia.
¿Me explico?
Saludos,
|