Hallo, ich habe folgende Frage (Variablenzugriff in Java):
Wann muss ich in Java auf eine Variable mit einem Objekt zugreifen (Fall 1)und wann kann ich die Variable ohne ein Objekt (Fall 2) benutzen?
Fall 1: object.variable
Fall 2: variable
Gehe ich recht von der Annahme aus, dass ich Fall 1 benutzen muss, wenn die Variable eine Instanzvariable ist, also z.B. so deklariert wurde:
object.variable = 30
und wenn ich nun auf diese Variable zugreifen möchte, muss ich schreiben
object.variable
Danke im vorab.
Hallo Michael,
public class Test
{
public int variable1;
public static int variable2;
}
public class A
{
public void aMethod()
{
Test t = new Test();
// Zugriff auf Instanz-Variable der Klasse Test
t.variable1 = 2;
// Zugriff auf statische Variable der Klasse Test
Test.variable2 = 3;
int variable3;
// Zugriff auf lokale Variable der Methode aMethod()
varialbe3 = 4;
}
}
Viele Grüsse
Simon
Hallo Simon, die Beispiele sind sehr gut. Eine Frage habe ich noch:
a) Wenn ich auf statische Variablen innerhalb der Klasse zugreifen möchte, die global deklariert sind, dann geschieht das doch auch ohne ein Objekt, da die Variable statisch ist oder?
b) Und wenn die Variable nicht statisch ist und global deklariert wurde, muss ich darauf mit einem Objekt zugreifen?
Hier als Beispielcode:
public class Test
{
public int variable1;
public static int variable2;
public static void main(String args[]){
Test object=new Test();
object.variable1 = 12;
variable2 = 23;
}
}
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hallo Simon, die Beispiele sind sehr gut. Eine Frage habe ich
noch:
a) Wenn ich auf statische Variablen innerhalb der Klasse
zugreifen möchte, die global deklariert sind, dann geschieht
das doch auch ohne ein Objekt, da die Variable statisch ist
oder?
Genau und dann ist es gut wenn Du in jemdem Fall den Klassennamen vorangstellst:
Test.variable2 = 23;
b) Und wenn die Variable nicht statisch ist und global
deklariert wurde, muss ich darauf mit einem Objekt zugreifen?
Genau.
Eine Frage:
Was verstehst Du unter Global?
Bei Java gibt es grundsätzlich nur Klassen. D.h. entweder sind das dann Instanzvariablen oder es sind statische Variablen.
Auf Instanzvariablen werden mit dem Objektzugegriffen (darum der Name)
Statische Variablen sind pro Klasse. Darum wird immer die Klasse dazu verwendet. (Anmerkung: es ist auch möglich mit dem Objekt auf die statische Variable zuzugreifen. Aber das verwirrt nur).
Gruss, Simon
Was verstehst Du unter Global?
Mit global meine ich natürlich die Variablen, die nicht in Methoden definiert wurden. Diese stehen in der Klasse für alle Klassenmethoden zur Verfügung . Diese Variablen könne dann statische Variablen oder Instanzvariablen sein.
Anmerkung: es ist auch möglich mit dem
Objekt auf die statische Variable zuzugreifen. Aber das
verwirrt nur.
Ja, denn die Variable gehört der Klasse (Membervariable).