Ver Mensaje Individual
  #4  
Antiguo 04-02-2009
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Reputación: 25
Delphius Va camino a la fama
¿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,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita