que - variables de instancia java
Java: ¿qué es una variable de instancia? (2)
Mi tarea es crear un programa con una variable de instancia, una Cadena, que el usuario debe imputar. Pero ni siquiera sé qué es una variable de instancia. ¿Qué es una variable de instancia? ¿Cómo creo uno? ¿Qué hace?
La variable de instancia es la variable declarada dentro de una clase, pero fuera de un método: algo así como:
class IronMan{
/** These are all instance variables **/
public String realName;
public String[] superPowers;
public int age;
/** Getters / setters here **/
}
Ahora esta clase IronMan se puede crear una instancia en otra clase para usar estas variables, algo así como:
class Avengers{
public static void main(String[] a){
IronMan ironman = new IronMan();
ironman.realName = "Tony Stark";
// or
ironman.setAge(30);
}
}
Así es como usamos las variables de instancia. Plug desvergonzado: Ejemplo extraído de este libro electrónico gratuito aquí here .
Una variable de instancia es una variable que es miembro de una instancia de una clase (es decir, asociada a algo creado con una new
), mientras que una variable de clase es un miembro de la misma clase.
Cada instancia de una clase tendrá su propia copia de una variable de instancia, mientras que solo hay 1 de cada variable estática (o clase) asociada con la clase misma.
difference-between-a-class-variable-and-an-instance-variable
Esta clase de prueba ilustra la diferencia
public class Test {
public static String classVariable="I am associated with the class";
public String instanceVariable="I am associated with the instance";
public void setText(String string){
this.instanceVariable=string;
}
public static void setClassText(String string){
classVariable=string;
}
public static void main(String[] args) {
Test test1=new Test();
Test test2=new Test();
//change test1''s instance variable
test1.setText("Changed");
System.out.println(test1.instanceVariable); //prints "Changed"
//test2 is unaffected
System.out.println(test2.instanceVariable);//prints "I am associated with the instance"
//change class variable (associated with the class itself)
Test.setClassText("Changed class text");
System.out.println(Test.classVariable);//prints "Changed class text"
//can access static fields through an instance, but there still is only 1
//(not best practice to access static variables through instance)
System.out.println(test1.classVariable);//prints "Changed class text"
System.out.println(test2.classVariable);//prints "Changed class text"
}
}