# Unterschied Instanzattribut und Referenzvariable



## J. (4. Feb 2010)

Hey Leute, 

Brauche mal kurze Interpreationshilfe bei folgenden 3 Sachverhalten.???:L Mir ist nicht ganz klar, wo der genau Unterschied liegt (bin noch recht am Anfang der Programmierens:rtfm


1) String text = new String ("A");    

2) String text;   
3) text = new String ("A");    

4) String text;
5) Konstruktormethode (String a, ...) {
6) this.text = a
...


1) String text = new String ("A");    => Deklaration einer Referenzvariable mit den Inputparamter "A" und Erzeugung eines neuen Objekts vom Typ String bzw. Referenz auf die Instanz der Klasse String

ist dasselbe wie 

2) String text;    => Deklaration der Referenzvariable "text" oder ist dies eine Deklaration eines Instanzattribut
3) text = new String ("A");    => Erzeugung eines neuen Objekts vom Typ String bzw. Referenz auf die Instanz der Klasse String oder wird die das Instanzarribut erst zu einer Referenzvariable, in dem eines neuen Objekts vom Typ String erzeugt wird bzw. Referenz auf die Instanz der Klasse String

Aber ???:L


4) String text;     ==> Hier ist das String text ja ein Instanzattribut
5) Konstruktormethode (String a, ...) {     
6) this.text = a     ==> was hier eindeutig der Konstruktormethode zugewiesen wird. 
...

Vielen Dank im Vorraus

VG
Jens


----------



## Michael... (4. Feb 2010)

Mir scheint Du wirfst Da Begriffe in einen Topf, die man so nicht von einander abgrenzen kann.
Ein Instanzattribut kann eine Referenzvariable sein - muss es aber nicht.
Eine Referenzvariable kann eine Instanzattribut sein - muss es aber nicht. ;-)

Zunächst muss ich darauf hinweisen: Ich bin kein Informatiker (--> alle Angaben ohne Gewähr)
Prinzipiell sind die Begriffe ja selbst sprechend:
Ein Instanzattribut ist ein Attribut einer Instanz, das Gegenstück dazu ist ein Klassenattribut, das ... ein Attribut einer Klasse ist.
Eine Referenzvariable ist eine Variable die eine Referenz auf ein Objekt enthält im Gegensatz zu einer "normalen" Variable die einen primitiven Datentyp enthält

```
class Demo {
    Object a;              //Instanzattribut und Referenzvariable
    static Object b;     //Klassenattribut und Referenzvariable
    int x;                   //Instanzattribut und "einfache" Variable
    static int y;          //Klassenattribut und "einfache" Variable
}
```


----------



## nrg (4. Feb 2010)

J. hat gesagt.:


> *Inputparamter* "A" und Erzeugung eines neuen Objekts vom Typ String bzw. Referenz auf die Instanz der Klasse String





J. hat gesagt.:


> 6) this.text = a     ==> *was hier eindeutig der Konstruktormethode zugewiesen wird. *



beantwortest deine Frage doch selbst.


----------



## J. (4. Feb 2010)

Meine genau Frage ist, wenn ich eine Referenzvariable habe, definiere ich dann zuerste ein Attribut
String text ;

und dann eine Referenzvariable
text = new String(); 

Denn am Anfang ist es das selbe wie ein Attribut aber hinterher eine Referenzvariable. Ich kann das ja auch verkürzt schreiben 
String text = new String();

dann ist es nämlich sofort eine Referenzvariable.


----------



## nrg (4. Feb 2010)

es ist wird nicht erst mit *new* klar, dass es eine Referenzvariable ist, weil text schon mit String deklariert wird.

les dir das mal durch: Kapitel 26 — Objektreferenzen


----------

