Sobre los modificadores 'static' y 'abstract'
Hola quería saber si es posible hacer una clase estática o abstracta en delphi (version 2006), al estilo de java y demás.
Quiero hacer una clase abstracta para que no se pueda instanciar más que en sus descendientes, pero no me deja poner el modificador abstract (MyClass = abstract class ??). Lo mismo me pasa cuando intento hacer toda una clase estática. Sé como hacer miembros abstractos y estáticos... pero clases enteras no. Gracias por la ayuda |
Hola,
Hasta donde yo llego, basta que una clase tenga un método "abstracto" o "estático" para que la clase que lo implementa se considere "abstracta" o "estática", respectivamente. No recuerdo ahora mismo que pueda explicitarse de otro modo esto. A lo mejor me equivoco. ;) |
|
Gracias, pero no se muestra ningún ejemplo de como usar clases estáticas.
He probado 'class abstract' y va bien. |
Hola,
Pues así es la verdad. Después de Delphi 2007 pueden declararse clases como esta:
Este artículo también puede interesar. No obstante, creo que hasta Delphi 7, lo que he dicho arriba sirve... |
Hola,
Cita:
Cita:
Yo tengo entendido que se considera una clase estática si esta cuenta con algún método estático. Pero parece posible instanciar una clase, aun teniendo algún método estático. Y, por otro lado, a partir de Delphi 7 se incluyen mejoras, como declarar propiedades estáticas, que no sé si podía hacerse en versiones anteriores, pero, creo que no. |
Creo que no es así, si declaras un miembro estático (class var nombreCampo / class procedure/function) o abstracto (function/procedure; virtual; abstract;) sólo son estáticos o abstractos esos miembros, no toda la clase, ya que tienes que instanciarla para acceder a los demás campos que no son ni estáticos ni abstractos.
En C#, cuando hay una clase estática todos los miembros tienen que ser obligatoriamente estáticos y las clases abstractas no se pueden instanciar a no ser que sea una clase heredada de esta. Conclusión: Con Delphi > 7 se puede hacer lo mismo, lo que usa nombres diferentes (lo que no entiendo es porqué cuando escribo static se vuelve de color azul, como si fuera keyword). Gracias |
La franja horaria es GMT +2. Ahora son las 19:40:29. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi