En la programación orientada a objetos y basada en clases , una variable de clase es una variable definida en una clase de la que 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 de 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 a través de un envío 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 envían dinámicamente.
Por lo tanto, en algunos lenguajes, variable miembro estática o función miembro estática se utilizan como sinónimos o en lugar de "variable de clase" o "función de clase", pero no son sinónimos en todos los lenguajes. Estos términos se utilizan 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 .
estructura Solicitud { int estático cuenta ; int numero ; Solicitud de objeto () { numero = count ; // modifica la variable de instancia "this->number" ++ count ; // modifica la variable de clase "Request::count" }};int Solicitud :: count = 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 a cada nuevo objeto Request se le asigna un number
en orden secuencial. Como count
es una variable de clase, solo hay un objeto Request::count
; por el contrario, cada objeto Request 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 claseperro_1 = Perro print ( perro_1 . vertebrado_group ) # accediendo a la variable de clase
En el código Python anterior, no se proporciona mucha información, ya que solo hay una variable de clase en la clase Dog 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) al tener una o más variables de instancia en la clase Dog.