Variable de instancia frente a variable local
Una variable de instancia es un tipo de variable que está presente en la programación orientada a objetos. Es una variable que se define en una clase, y cada objeto de esa clase contiene una copia separada de esa variable. Por otro lado, el uso de variables locales no se limita a los lenguajes de programación orientados a objetos. Es una variable que puede evaluarse solo dentro de un bloque de código particular (por ejemplo, función, bloque de bucle, etc.) en el que está definida. Por esta razón, se dice que las variables locales tienen un ámbito local.
¿Qué es una variable de instancia?
Las variables de instancia se utilizan en la programación orientada a objetos para almacenar el estado de cada objeto en una clase. También se conocen como variables miembro o variables de campo. Las variables de instancia se declaran sin usar la palabra clave estática en Java. Los valores almacenados en las variables de instancia son únicos para cada objeto (cada objeto tiene una copia separada) y los valores almacenados en ellas representan el estado de ese objeto. El espacio para una variable de instancia se asigna en el montón, cuando ese objeto se asigna en el montón. Por lo tanto, las variables de instancia se mantienen en la memoria mientras el objeto esté vivo. Por ejemplo, el color de un automóvil es independiente del color de otro automóvil. Entonces, el color de un objeto de automóvil se puede almacenar en una variable de instancia. En la práctica, las variables de instancia se declaran dentro de las clases y fuera de los métodos. Por lo general, las variables de instancia se declaran como privadas para que solo se pueda acceder a ellas dentro de la clase declarada.
¿Qué es una variable local?
Las variables locales son variables que tienen un alcance local y se declaran dentro de un bloque de código específico. Las variables locales pueden verse como variables que utiliza un método para almacenar su estado temporal. El alcance de una variable local se determina utilizando la ubicación en la que se declara la variable y no se utilizan palabras clave especiales para este fin. Normalmente, el acceso a una variable local está limitado dentro del bloque de código que se declara (es decir, entre las llaves de apertura y cierre de ese bloque de código). Las variables locales normalmente se almacenan en la pila de llamadas. Esto permitiría que las llamadas a funciones recursivas mantengan sus propias copias de las variables locales para almacenarlas en espacios de direcciones de memoria separados. Cuando el método finaliza su ejecución, la información sobre ese método se extrae de la pila de llamadas, y también se destruyen las variables locales que estaban almacenadas.
¿Cuál es la diferencia entre la variable de instancia y la variable local?
Las variables de instancia se declaran dentro de clases fuera de los métodos y almacenan el estado de un objeto, mientras que las variables locales se declaran dentro de bloques de código y se utilizan para almacenar el estado de un método. Una variable de instancia está viva siempre que el objeto que contiene esa variable esté vivo, mientras que una variable local está viva durante la ejecución de ese método/bloque de código. Se puede acceder a una variable de instancia (que se declara pública) dentro de la clase, mientras que solo se puede acceder a una variable local dentro del bloque de código que se declara. El uso de variables de instancia solo se limita a la programación orientada a objetos, mientras que las variables locales no tienen tal limitación.