it-swarm.com.de

Java -Was ist eine Instanzvariable?

Meine Aufgabe besteht darin, ein Programm mit einer Instanzvariablen, einem String, zu erstellen, der vom Benutzer eingegeben werden soll. Aber ich weiß nicht einmal, was eine Instanzvariable ist. Was ist eine Instanzvariable? Wie erstelle ich eine? Was tut es?

35
aqua

Instanzvariable ist die Variable, die innerhalb einer Klasse, aber außerhalb einer Methode deklariert wurde:

class IronMan{

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

     /** Getters / setters here **/
}

Jetzt kann diese IronMan-Klasse in einer anderen Klasse instanziiert werden, um diese Variablen zu verwenden.

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

}

So verwenden wir die Instanzvariablen. Schamloser Stecker: Beispiel aus diesem kostenlosen E-Book hier gezogen hier .

68
Yash Sharma

Eine Instanzvariable ist eine Variable, die Mitglied einer Instanz einer Klasse ist (d. H. Mit etwas verknüpft ist, das mit einem new erstellt wurde), während eine Klassenvariable Mitglied der Klasse selbst ist.

Jede Instanz einer Klasse verfügt über eine eigene Kopie einer Instanzvariablen, wohingegen nur eine statische (oder Klassen-) Variable der Klasse selbst zugeordnet ist.

nterschied zwischen einer Klassenvariablen und einer Instanzvariablen

Diese Testklasse verdeutlicht den Unterschied

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