web-dev-qa-db-fra.com

Java -Qu'est-ce qu'une variable d'instance?

Mon travail consiste à créer un programme avec une variable d'instance, une chaîne, qui doit être entrée par l'utilisateur. Mais je ne sais même pas ce qu'est une variable d'instance. Qu'est-ce qu'une variable d'instance? Comment en créer un? Qu'est ce que ça fait?

35
aqua

La variable d'instance est la variable déclarée dans une classe, mais en dehors d'une méthode: quelque chose comme:

class IronMan{

     /** These are all instance variables **/
     public String realName;
     public String[] superPowers;
     public int age;

     /** Getters / setters here **/
}

Maintenant, cette classe IronMan peut être instanciée dans une autre classe pour utiliser ces variables, quelque chose comme:

class Avengers{
        public static void main(String[] a){
              IronMan ironman = new IronMan();
              ironman.realName = "Tony Stark";
              // or
              ironman.setAge(30);
         }

}

Voici comment nous utilisons les variables d'instance. Prise sans vergogne: Exemple tiré de cet ebook gratuit ici ici .

68
Yash Sharma

Une variable d'instance est une variable membre d'une instance de classe (c'est-à-dire associée à quelque chose créé avec un new), alors qu'une variable de classe est un membre de la classe elle-même.

Chaque instance d'une classe aura sa propre copie d'une variable d'instance, alors qu'il n'y a qu'une seule variable statique (ou classe) associée à la classe elle-même.

différence-entre-une-classe-variable-et-une-instance-variable

Cette classe de test illustre la différence

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"
    }
}
26
Richard Tingle