Variablen Unterschied zwischen lokalen-, Instanz-, Klassenvariablen

Javaman91

Bekanntes Mitglied
Hallo,

ich habe mich gerade mit den einzelnen Variablen beschäftigt.

Nun wollte ich euch fragen, ob das so korrekt ist:

1. Lokale Variablen:

Lokale Variablen sind Variablen die innerhalb einer Methode verwendet werden.

Java:
public void BeispielMethode(){

int i =0; //lokale Variable

}

Sie können nur von dieser Methode verwendet werden und müssen vom Programmierer initialisiert (Wertzuweisung) werden.

2. Klassenvariablen:

Klassenvariablen werden innerhalb einer Klasse angelegt und können von jeder Methode wie auch von jedem Objekt dieser Klasse verwendet werden.

Beispiel für eine Klassenvariable:

Java:
public static int name;

Der Zugriffsmodifikator "static" sagt aus das es sich bei dieser Variable um einen Klassenvariable handelt.

Klassenvariablen werden automatisch initialisiert.

3. Instanzvariablen:

Instanzvariablen werden ebenfalls in einer Klasse angelegt.
Sie werden nur von Objekten verwenden, diese speichern ihre Eigenschaften darin ab.
Eine Instanzvariable ist für alle Objekte einer Klasse zugänglich.

Beispiel:

Ich habe z.B. drei Objekte und eine Instanzvariable deklariert, dann können alle drei Objekte auf diese eine Instanzvariable zugreifen.

So sieht eine Instanzvariable aus:

Java:
public int zahl;

Hier muss auf das Schlüsselwort "static" verzichtet werden.

Ich hoffe, dass ich das so halbwegs erklären konnte?

MfG
 
Ja, das hört sich soweit richtig an. Lediglich bezüglich der Zugriffsmöglichkeiten ist es etwas ungenau.

Und bei deinem Beispiel: Wenn Du 3 Instanzen einer Klasse hast, dann hat jede Klasse natürlich seine eigene Instanzvariable. Bei deinem Beispiel hörte sich das etwas so an, als ob die sich eine Variable teilen würden.
 
O.K.

Was stimmt bei den Zugriffsmöglichkeitn nicht?

Ich habe geschrieben, das sich alle drei Objekte eine Instanzvariable teilen. Nicht die Klassen.
Wenn ich z.B. drei Objekte habe aber nur eine Instanzvariable, dann können alle drei Objekte auf diese eine Instanzvariable zugreifen.

Sollte doch eigentlich so sein oder nicht??
 
Nein, wenn du in der Klasse eine Instanzvariable deklariert hast, enthält jedes Objekt (also jede Instanz) dieser Klasse eine eigene Instanzvariable. Das Objekt kann auf die eigene Instanzvariable zugreifen. Ob es auf die Instanzvariablen der anderen Objekte zugreifen kann, hängt vom Zugriffsmodifikator ab.
 
Die Instazvariablen sind sozusagen der Zustand und die Eigenschaften eines Objektes. Ein Auto hat eine Farbe. Aber von Auto zu Auto ist die Farbe unterschiedlich. Es teilen sich nicht alle Autos eine Farbe.

Und Zugriffsmöglichkeiten bezeichnet ja doch deutlich mehr. Dafür gibt es ja public / private und so. Also die Frage ist, wer auf die Variablen zugreifen kann. Ob es nur aus der eigenen Klasse (private), auch von abgeleiteten Klassen (protected) oder nur aus dem Package (nix davor geschrieben) oder von überall (public) zugegriffen werden kann - das würde ich als Zugriffsmöglichkeiten bezeichnen.
 
Achso,

dass heißt wenn ich es im Programm nur einmal hinschreibe:

Java:
public int größe;

bekommt in Wahrheit jedes Objekt eine eigene Instanzvariable.
Das heißt es gibt die Instantzvariable "int größe" eigentlich 3 Mal.
Hätte ich z.B. 5 Objekte, dann gebe es diese Variable 5 Mal usw.

Würde ich in das Programm noch eine zweite Variable hinzufügen z.B.:

Java:
public int größe;
Java:
public int gewicht;

dann würde hier jedes Objekt eine eigene Instanzvariable von "int größe" & "int gewicht" bekommen.
 

Zurück
Oben