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

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 […]

Java Duales Zahlensystem – Binäre Zahlen in Java umwandeln

Java Dual System

Das duale Zahlensystem hat viele Bezeichnungen. Oft wird auch es Dualsystem oder Binärsystem genannt. Es besteht aber immer aus 2 Zahlen. Man verwendet oft die Zahlen 0 und 1. Es können aber auch sämtliche anderen Zahlenpaare sein. Zum Beispiel 7 und 175 sind für sich genommen, auch ein normales Zahlenpaar und somit ein Dualsystem. Mit […]

Java Vererbung findet auch zwischen Einkaufstüten und Polizeiautos statt

Java Vererbung

„Manchmal findet Java Vererbung auch zwischen Einkaufstüten und Polizeiautos statt“ Irrer Titel, oder? Aber mal Hand aufs Herz. Was haben eigentlich eine Einkaufstüte und ein Polizeiwagen gemeinsam? Ich verrate dir etwas: Du kannst die Verbindung nicht erkennen, denn ich habe dir nicht alles verraten. Es fehlt noch ein wichtiger Aspekt – eine Verbindung zwischen beiden. […]

Das Java Leben ist einfacher mit For-Schleife

Java For Schleife Aufbau

In einem anderen Artikeln habe ich bereits über Schleifen in Java gesprochen. In diesem Artikel möchte ich dir eine ganz besondere Schleife vorstellen. Warum ist diese so toll? Sie hat einen integrierten Schleifenzähler. Die Schleife zählt also bei jedem Durchlauf automatisch mit. Aber dazu gleich mehr…. Lass uns einmal so eine For Schleife anlegen.

Java lernen – 10 nützliche Tipps für Java Anfänger

Java Lernen Anfänger

Wenn du die Programmiersprache Java lernen möchtest, bist du hier prinzipiell erst einmal richtig. Und wenn du es wirklich ernst meinst und in die Java Programmierung einsteigen möchtest, solltest du auch meinen kostenlosen Java Kurs beanspruchen. Wenn du dabei bist, bekommst du: Eine Lektion pro Woche zu den Basics. Hier geht es um die ersten […]

So kannst du Instanzen in Java Klassen zählen

Wie kannst du die Instanzen der Java Klassen zählen? Ganz einfach. Am besten ist es, wir bleiben beim Einführungsbeispiel zu den Java Klassen. Und ich wähle die Klasse „Monster“. Um es einfach zu halten, soll auch der Programmstart durch die Klasse erfolgen. Die Klasse bietet somit eine main-Methode an.

So verwendest du Inkrement und Dekrement Operatoren in deinen Java Programmen

Java Operatoren

In diesem Beitrag geht es um Java Operatoren. Ich möchte dir gern zwei neue Operatoren vorstellen. Diese nennen sich Inkrement und Dekrement. Ja was heißt das? Inkrementieren bedeutet eine schrittweise Erhöhung einer Zahl. Und dementsprechend bedeutet Dekrementieren: Die schrittweise Verminderung einer Zahl. Wozu brauchst du das? Stell dir vor. Du bekommst eine Liste mit Namen […]

Der Java Datentyp boolean im Interview

Java boolean

Nein, ich bin nicht verrückt. Aber… Neulich traf ich zufällig den Java Datentyp boolean. 🙂 Er erklärte sich bereit, mir ein Interview zu geben. In diesem Interview geht es um die Werte, welcher dieser Wertetyp annehmen kann. Und in diesem Zusammenhang geht es auch um Logik. Also lassen wir uns doch die Logik vom direkten […]

Das Java Vererbung Konzept in einem Rollenspiel

Java ist eine objektorientierte Programmiersprache. Und das bedeutet nicht nur, dass du Objekte einer Java Klasse erzeugen kannst. Es bedeutet auch, dass Java Klassen von anderen Klassen erben können. Wieso das Ganze? Stell dir einmal ein Rollenspiel vor. Wie würdest du ein Rollenspiel entwerfen? In einem Rollenspiel gibt es magische Gegenstände. Zauberringe, Zauberstäbe, welche bei […]