Подтвердить что ты не робот

Java -Какая переменная экземпляра?

Мое назначение - создать программу с переменной экземпляра, String, которая должна быть введена пользователем. Но я даже не знаю, что такое переменная экземпляра. Что такое переменная экземпляра? Как его создать? Что он делает?

4b9b3361

Ответ 1

Переменная экземпляра - это переменная, объявленная внутри класса, но вне метода: что-то вроде:

class IronMan{

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

     /** Getters / setters here **/
}

Теперь этот класс IronMan может быть создан в другом классе для использования этих переменных, например:

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

}

Вот как мы используем переменные экземпляра. Более забавные вещи на основе java здесь.

Ответ 2

Переменная экземпляра - это переменная, являющаяся членом экземпляра класса (например, связанная с чем-то, созданным с помощью new), тогда как переменная класса является членом самого класса.

Каждый экземпляр класса будет иметь свою собственную копию переменной экземпляра, тогда как только одна из каждой статической (или классной) переменной связана с самим классом.

difference-between-a-class-variable-and-an-instance-variable

Этот тестовый класс иллюстрирует разницу

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 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"
    }
}