En la programación orientada a objetos con clases , una variable de clase es cualquier variable declarada con el static
modificador de la cual existe una sola copia, independientemente de cuántas instancias de la clase existan. [1] [2] [3] [4] [5] Tenga en cuenta que en Java, los términos "campo" y "variable" se utilizan indistintamente para variable miembro .
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 instancia y miembros de clase se aplica también a los métodos ("funciones miembro"); una clase puede tener ambos métodos de instancia y métodos de la clase .
Variables miembro estáticas y funciones miembro estáticas
En algunos lenguajes, las variables de clase y los métodos de clase se resuelven estáticamente, no a través del 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 asignan dinámicamente en tiempo de ejecución (en cada instanciación 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 lenguajes, la variable miembro estática o la función miembro estática se utilizan como sinónimo 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 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 .
Ejemplo
solicitud de estructura { contador int estático ; int número ; Requestobject () { número = contador ; // modifica la variable de instancia "this-> number" ++ contador ; // modifica la variable de clase "Request :: count" }};int Request :: 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 el número de solicitudes que se han construido, y a cada nuevo objeto de solicitud se le asigna un number
orden secuencial. Dado que count
es una variable de clase, solo hay un objeto Request::count
; por el contrario, cada objeto Request contiene su propio number
campo distinto .
También tenga en cuenta que la variable Request::count
se inicializa solo una vez.
Notas
- ^ "El tutorial de Java, variables" . Consultado el 21 de octubre de 2010 .
- ^ "El tutorial de Java, comprensión de la instancia y los miembros de la clase" . Consultado el 21 de octubre de 2010 .
- ^ "La referencia del lenguaje Python, declaraciones compuestas" . Consultado el 21 de octubre de 2010 .
- ^ "Referencia de tiempo de ejecución de Objective-C" . Desarrollador de Apple . Consultado el 1 de abril de 2018 .
- ^ a b "Variables de clase en C #" . Syntaxdb . Consultado el 1 de abril de 2018 .