En la programación orientada a objetos basada en clases , una variable de clase es una variable definida en una clase de la cual existe una única copia, independientemente de cuántas instancias de la clase existan. [1] [2] [3] [4] [5]
Una variable de clase no es una variable de instancia . Es un tipo especial de atributo de clase (o propiedad de clase, campo o miembro de datos). La misma dicotomía entre miembros de instancia y clase se aplica también a los métodos ("funciones miembro"); una clase puede tener tanto métodos de instancia como métodos de clase .
En algunos lenguajes, las variables de clase y los métodos de clase se resuelven estáticamente, no mediante despacho dinámico , o su memoria se asigna estáticamente en tiempo de compilación (una vez para toda la clase, como variables estáticas ), no se asigna dinámicamente en tiempo de ejecución (en cada instancia de un objeto). En otros casos, sin embargo, uno o ambos son dinámicos. Por ejemplo, si las clases se pueden definir dinámicamente (en tiempo de ejecución), las variables de clase de estas clases se asignan dinámicamente cuando se define la clase y, en algunos lenguajes, los métodos de clase también se distribuyen dinámicamente.
Por lo tanto, en algunos idiomas, la variable miembro estática o la función miembro estática se usan como sinónimos o en lugar de "variable de clase" o "función de clase", pero no son sinónimos en todos los idiomas. Estos términos se usan comúnmente en Java , C# , [5] y C++ , donde las variables de clase y los métodos de clase se declaran con la static
palabra clave y se denominan variables miembro estáticas o funciones miembro estáticas .
Solicitud de estructura { recuento de enteros estáticos ; número entero ; Objeto de solicitud () { número = contar ; // modifica la variable de instancia "este->número" ++ contar ; // modifica la variable de clase "Request::count" }};int Solicitud :: cuenta = 0 ;
En este ejemplo de C++, la variable de clase Request::count
se incrementa en cada llamada al constructor , de modo que Request::count
siempre contiene la cantidad de solicitudes que se han construido y cada nuevo objeto de solicitud recibe un number
orden secuencial. Como count
es una variable de clase, solo hay un objeto Request::count
; por el contrario, cada objeto Solicitud contiene su propio number
campo distinto.
Tenga en cuenta también que la variable Request::count
se inicializa sólo una vez.
clase Perro : grupo_vertebrado = 'mamíferos' # variable de clasedog_1 = Impresión de perro ( dog_1 . vertebrado_group ) # accediendo a la variable de clase
En el código Python anterior, no proporciona mucha información ya que solo hay una variable de clase en la clase Perro que proporciona el grupo de vertebrados de perros como mamíferos. En la variable de instancia, puede personalizar su propio objeto (en este caso, dog_1) teniendo una o más variables de instancia en la clase Perro.