Skip to main content

Java Übung – So greifst du auf Variablen zu

In dieser Java Übung soll der Unterschied zwischen Instanz- und Klassenvariablen demonstriert werden.
Außerdem werde ich dir den Zugriff über Methoden zeigen.

  1. Lege dazu eine Klasse Variablenzugriff an.
    • Deklariere eine Instanzvariable, namens „zaehlerInstanz“.
      Der Wertebereich dieser Variablen soll eine ganze Zahl sein.
    • Deklariere eine zweite Variable.
      Diese soll allerdings eine Klassenvariable sein.
      Nenne diese „zaehlerKlasse“.
      Der Datentyp soll ebenfalls dem einer ganzen Zahl entsprechen.
  2. Im parameterlosen Konstruktor der Klasse „Variablenzugriff“ sollen beide Variablen um eins erhöht werden.

  3. Außerdem sollen in der Klasse drei Methoden implementiert werden.
    • Die Instanzmethode „zaehleInstanz“ soll den Wert der Instanzvariable zurückgeben.
    • Die zweite Methode ist eine statische Methode, namens „zaehleKlasse“.
      Diese gibt dann den Wert der Klassenvariable zurück.
    • Die dritte Methode ist die main-Methode.
      Innerhalb der main-Methode werden zwei Objekte der Klasse erzeugt.
      Nenne diese Objekte „zaehlerEins“ und „zaehlerZwei“.
      An diesen Objekten kannst du dann die Instanzmethode „zaehleInstanz“ aufrufen.
    • Die main-Methode führt außerdem die zweite Methode „zaehleKlasse“ aus.
    • Lass dir die Rückgabewerte der Methoden auf der Konsole anzeigen.
  • Welchen Rückgabewert hat die Instanzvariable für das erste Objekt?
  • Welchen Rückgabewert hat die Instanzvariable für das zweite Objekt?
  • Welchen Rückgabewerte hat die Klassenvariable nachdem beide Objekte erzeugt wurden?

So sieht die Lösung zu dieser Java Übung aus.

Als Erstes legst du die Klasse an.
Achte beim Klassennamen auf die Namenskonvention. (VariablenZugriff)

Innerhalb der Klasse legst du dann die beiden Variablen und den parameterlosen Konstruktor an.

Und so sieht der Code aus.

public class VariablenZugriff {
int zaehlerInstanz; //Objektvariable vom Datentyp Integer
static int zaehlerKlasse; // Klassenvariable vom Datentyp Integer

public VariablenZugriff(){ //parameterloser Konstruktor
 zaehlerInstanz=zaehlerInstanz+1; //Instanzvariable wird um eins erhöht
 zaehlerKlasse=zaehlerKlasse+1; //Klassenvariable wird um eins erhöht
}

}

Als nächstes kannst du die Instanzmethode „zaehleInstanz“ und „zaehleKlasse“ implementieren.

public class VariablenZugriff {
int zaehlerInstanz; //Objektvariable vom Datentyp Integer
static int zaehlerKlasse; // Klassenvariable vom Datentyp Integer

int zaehleInstanz(){ //Objektmethode mit Rückgabetyp Integer
 return zaehlerInstanz; //Rückgabe der Objektvariable
}

static int zaehleKlasse(){ //Klassenmethode Rückgabetyp Integer
 return zaehlerKlasse; //Rückgabe der Klassenvariable
}

public VariablenZugriff(){//parameterloser Konstruktor
 zaehlerInstanz=zaehlerInstanz+1;//Instanzvariable wird um eins erhöht
 zaehlerKlasse=zaehlerKlasse+1;//statische Variable wird um eins erhöht
}
}

Im nächsten Schritt implementierst du noch die main-Methode.
Dann erzeugst du beide Objekte.
Innerhalb der Klammern der System.out.println()-Anweisung findet der jeweilige Methodenaufruf statt.

public class VariablenZugriff {
int zaehlerInstanz; //Instanzvariable vom Datentypen Integer
static int zaehlerKlasse; // statische Variable vom Datentyp Integer

int zaehleInstanz(){ //Objektmethode mit Rückgabetyp Integer
 return zaehlerInstanz; //Rückgabe der Objektvariable
}

static int zaehleKlasse(){ //Klassenmethode Rückgabetyp Integer
 return zaehlerKlasse; //Rückgabe der Klassenvariable
}

public VariablenZugriff(){//parameterloser Konstruktor
 zaehlerInstanz=zaehlerInstanz+1;//Instanzvariable wird um eins erhöht
 zaehlerKlasse=zaehlerKlasse+1;//statische Variable wird um eins erhöht
}

public static void main(String[] args) {
 VariablenZugriff zaehlerEins = new VariablenZugriff();//Objekt zaehlerEins wird erzeugt
 VariablenZugriff zaehlerZwei = new VariablenZugriff();//Objekt zaehlerZwei wird angelegt
 
 System.out.println(zaehlerEins.zaehleInstanz());//Konsolenausgabe für Objekt zaehlerEins
 System.out.println(zaehlerZwei.zaehleInstanz());//Konsolenausgabe für Objekt zaehlerZwei
}
}

Jetzt kannst du die ersten beiden Fragen zur Aufgabe beantworten.
Die Instanzvariablen für die Objekte „zaehlerEins“ und „zaehlerZwei“ ist jeweils Eins.
Kommen wir zur statischen Variable.

public class VariablenZugriff {
int zaehlerInstanz; //Instanzvariable vom Datentypen Integer
static int zaehlerKlasse; // statische Variable vom Datentyp Integer

int zaehleInstanz(){ //Objektmethode mit Rückgabetyp Integer
 return zaehlerInstanz; //Rückgabe der Objektvariable
}

static int zaehleKlasse(){ //Klassenmethode Rückgabetyp Integer
 return zaehlerKlasse; //Rückgabe der Klassenvariable
}

public VariablenZugriff(){//parameterloser Konstruktor
 zaehlerInstanz=zaehlerInstanz+1;//Instanzvariable wird um eins erhöht
 zaehlerKlasse=zaehlerKlasse+1;//statische Variable wird um eins erhöht
}

public static void main(String[] args) {
 VariablenZugriff zaehlerEins = new VariablenZugriff();//Objekt zaehlerEins wird erzeugt
 VariablenZugriff zaehlerZwei = new VariablenZugriff();//Objekt zaehlerZwei wird angelegt
 
 System.out.println(zaehlerEins.zaehleInstanz());//Konsolenausgabe für Objekt zaehlerEins
 System.out.println(zaehlerZwei.zaehleInstanz());//Konsolenausgabe für Objekt zaehlerZwei
 System.out.println(zaehleKlasse());//Konsolenausgabe der statischen Variablen
}
}

Die statische Variable hat den Wert zwei.

Worin besteht der Unterschied zwischen den Variablen?
Du hast innerhalb der main Methode zwei Objekte angelegt.
Du hast somit zweimal den parameterlosen Konstruktor aufgerufen.
Im Konstruktor wurde somit zweimal der Wert der Instanzvariable um eins erhöht.

Doch der Wert war für beide Instanzen jeweils eins?

Warum?
Jedes Objekt hat seine eigene Instanzvariable.
Das bedeutet, dass die Variable „zaehlerInstanz“ für das Objekt „zaehlerEins“ eine ganz andere ist, als für „zaehlerZwei“.

Du kannst somit für jedes Objekt die Instanzvariable unterschiedlich belegen.
Jede Instanzvariable kann je nach Objekt einen unterschiedlichen Wert zugewiesen bekommen.
Somit ist es möglich zum Beispiel Menschobjekte mit unterschiedlichen Größen, Gewichten usw. anzulegen.

Bei den Klassenvariablen funktioniert dies nicht.
Du hast gesehen, dass wir diese Variable im Konstruktor erhöht haben.
Und diese Variable beträgt zwei.

Falls du jetzt noch mehr Objekte anlegst, wird der Konstruktor öfter aufgerufen.
Dadurch könnte der Wert der Klassenvariable auf drei, vier usw. steigen.
Somit wird klar, dass Klassenvariablen nicht objektspezifisch sind.
Klassenvariablen stehen allen Objekten zur Verfügung.
Die vielseitigen Möglichkeiten für den Einsatz von Klassenvariablen habe ich in einem Beitrag beschrieben.

Falls du jetzt Lust hast mehr über Variablen zu erfahren, dann klicke hier.


Ähnliche Beiträge

Zwei smarte Möglichkeiten eine Java Zufallszahl zu erzeugen

Java Zufallszahl

Java Zufallszahl – Wieso? In der Java Programmierung benötigst du immer wieder einmal Zufallszahlen. Du möchtest deine Software mit Daten testen und dir keine Zahlen ausdenken. Du benötigst Stichproben, welche ein reales Verhalten simulieren. Du hast ein Spiel entworfen und die Akteure sollen mit zufälligen aber unterschiedlichen Größen, Rüstungsleveln usw. auftreten. Die Einsatzmöglichkeiten für Zufallszahlen […]

Nutze die richtigen Methoden zum Java Lernen

Java lernen Methoden

Ich lernte die Java Programmierung auf die klassische Art. Ich kaufte mir das erste Buch und los ging es. „Jetzt wirst du Java lernen“ – sagte ich zu mir. Ich war relativ schnell ziemlich frustriert, denn irgendwie fehlten mir ein paar Zusammenhänge. Kennst du das? Du hast ein Wissensfetzen und noch einen. Aber das Wichtigste. […]

Der bedeutende Unterschied zwischen Klassenvariablen und Instanzvariablen

Java Klassenvariablen

Bei der Java Programmierung unterscheidet man drei Arten von Variablen. Als erste Gruppe sind die lokalen Variablen zu nennen. Auf diese gehe ich in einem separaten Artikel ein. Mich interessieren die zwei anderen Variablentypen. Zum einen existieren Klassenvariablen. Und dann sind da noch die Instanzvariablen. Wo liegt der Unterschied? Instanzvariablen stehen einem Objekt zur Verfügung. […]

So kannst du Java installieren

Java installieren

Bevor du loslegst und deine ersten Java Programme schreibst, benötigst du die entsprechende Arbeitsumgebung. Du solltest also Java installieren. Und diese Arbeitsumgebung beinhaltet dann Bibliotheken für die einzelnen Java-Standard-Klassen, Dateien um deine Programme auszuführen. Dateien um deine Programme zu packen, Logische Verzeichnisstrukturen

So implementierst du Instanzmethoden in deine Java Klasse

Java Instanzmethoden

In einen der letzten Beiträge habe ich dir gezeigt, wie du eine Klasse anlegen kannst. Ich habe die Klasse „Mensch“ oder „Human“ angelegt und wir haben die erste Instanzvariable implementiert. Dein Code sollte jetzt so aussehen: public class Human { int size=156;//size in centimeter } In diesem Beitrag werde ich dir zeigen, wie du Java […]

Heap & Stack – Die Speicherverwaltung in Java

Java Speicher

Java nutzt eine interne Speicherverwaltung. Eigentlich sind es mehrere. Uns interessieren lediglich zwei. Da das Thema Speicherverwaltung recht umfangreich ist, habe ich dir im Folgenden einmal die wichtigsten Artikel zusammengestellt. Die zwei Speichersysteme von Java Java Methoden werden auf dem Stack gestapelt. Der Speicher auf dem Java Methoden zu Hause sind, nennt sich Stack Speicher. […]

Der wichtige Unterschied zwischen Java Methoden

Java Methoden Unterschied

Jetzt machen wir Nägel mit Köpfen. Dieses Sprichwort stammt aus den Anfängen des Industriezeitalters. Denn früher wurden Nägel nicht industriell, sondern per Hand gefertigt. Und da kam es schon einmal vor, dass versehentlich Nägel ohne Kopf produziert wurden. Was blieb ist das Sprichwort „Nägel mit Köpfen“ Und dieses steht sinngemäß für eine schnelle, qualitativ hochwertige […]

Beim Aufruf werden Java Methoden auf dem Stack gestapelt

Java Methoden gestapelt

Java Methoden werden beim Aufruf gestapelt. Und jedes Element auf dem Stapel nimmt Speicherplatz weg. Und manchmal ist es so, dass der Stapel richtig hoch wird und dann…. Ja was passiert eigentlich dann? Betrachten wir einmal ein Computerspiel. Irgendeines. In diesem Computerspiel gibt es Vögel, welche abgeschossen werden sollen. Was bedeutet das denn genau? Beim […]

So kannst du dein Java Programm mit der main Methode ausführen

Auf zum ersten Java Programm. Vielleicht fragst du dich jetzt gerade: Na, was haben wir denn bisher gemacht? War das etwa kein Java Programm? Wir haben bisher nur eine Klasse „Human“ für ein zuküntfiges Mensch-Objekt erstellt. Diesem Objekt haben wir eine Instanzvariable, namens size (Größe) zugeordnet. Und wir haben eine Instanzmethode, namens grow (wachsen) geschrieben. […]

Java Polymorphie – besserer Code und mehr Möglichkeiten

Java Polymorphie Vorteile

Polymorphie ist das Herzstück jeder objektorientierten Sprache. Nicht nur in Java – auch in Python, Javascript und in anderen Sprachen. Aber was bedeutet Polymorphie eigentlich? Polymorphie oder auch Polymorphismus genannt, kommt aus dem Griechischen. Es bedeutet Vielgestaltigkeit. Etwas freier übersetzt, kannst du es auch als Facettenreichtum bezeichnen. Im Grunde genommen zielt die ganze Java Vererbung […]