Variable de instancia vs 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 tiene una copia separada de esa variable. Por otro lado, el uso de variables locales no se limita a lenguajes de programación orientados a objetos. Es una variable que se puede evaluar solo dentro de un bloque de código particular (por ejemplo, función, bloque de bucle, etc.) en el que se define. Debido a esta razón, se dice que las variables locales tienen un alcance 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 utilizar 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 ellos 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 siempre que el objeto esté activo. Por ejemplo, el color de un automóvil es independiente del color de otro automóvil. Por lo tanto, 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 clases y métodos externos. Por lo general, las variables de instancia se declaran privadas, de modo que solo se puede acceder a ellas dentro de la clase que se declara..
¿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 se pueden ver 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 las palabras clave especiales no se utilizan para este propósito. 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 ser almacenadas 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, destruyendo también las variables locales que se almacenaron.
¿Cuál es la diferencia entre la variable de instancia y la variable local?
Las variables de instancia se declaran dentro de las clases fuera de los métodos y almacenan el estado de un objeto, mientras que las variables locales se declaran dentro de los bloques de código, y se usan para almacenar el estado de un método. Una variable de instancia está activa mientras el objeto que contiene esa variable esté activo, mientras que una variable local está activa 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 a una variable local solo se puede acceder dentro del bloque de código que se declara. El uso de las variables de instancia solo se limita a la programación orientada a objetos, mientras que las variables locales no tienen tal limitación.