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

Nutze das Java Switch Case Statement für komplexe Verzweigungen

Java Switch case

Java switch case statement – was ist das? Wozu brauchst du das? Lass mich anders beginnen… 🙂 In einen meiner früheren Beiträge habe ich schon einmal über bedingte Anweisungen oder Zuweisungen geschrieben. Diese if und else Konstrukte funktionieren eigentlich ganz gut. Aber was ist, wenn du mehrere Parameter abfangen möchtest. Okay ein Beispiel…

So unterstützen dich Java Vererbungstabellen beim Entwurf

Java Vererbungstabellen

Bei der Java Vererbung gibt es zwei Klassenarten bzw. -stufen. Die Superklassen, welche einen allgemeinen Typen darstellen Und die spezielleren Unterklassen, welche die Superklasse um bestimmte Funktionen erweitern. Jetzt ist dieses ganze „Der-erbt-von-dem-Konzept“ mitunter sehr schwierig darzustellen. Zum Beispiel in einem Werkzeugkoffer. In einem Werkzeugkoffer befinden sich sämtliche Werkzeuge, von Säge bis Bohrmaschine. Wie machst […]

So legst du Utility Klassen in Java an

Java Utility Klassen

Utility Java Klassen – was ist das? Man nennt diese auch Hilfsklassen von Java. Diese Utility Klassen sind Java Klassen, welche lediglich Methoden und Konstanten anbieten. Am Beispiel: Die Klasse Math ist so eine klassische Utility Klasse. Wozu braucht man solche Klassen? Diese Klassen sind so etwas wie ein Werkzeugkoffer für jedes Java Programm. Hier […]

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

Lassen wir Java rechnen – Die Rechenoperationen für Variablen

Java rechnen

Ich liebe Mathe. In der Biographie „Der Mann, der die Zahlen liebte“, stellt Paul Hoffmann das Mathematikgenie Paul Erdös vor. Erdös war eines der größten Genies des 20 Jahrhunderts. Er arbeitete mit zahlreichen Wissenschaftlern zusammen und verfasste durchschnittlich mehr Publikationen im Jahr, als andere Mathematiker im ganzen Leben. Da Erdös sich mit sehr vielen Theoremen […]

Warum Java Kommentare immer ein Mittel der Kommunikation sind

Java Kommentare Kommunikation

Kennst Du die Bücherreihe „Miteinander reden“ von Schulz von Thun? Falls Du an der Uni warst oder bist, gehört dieses Buch zur Standardlektüre im Fach Schlüsselkompetenz. Denn ein Java Entwickler, welcher im Team arbeitet, muss klar und deutlich kommunizieren können. Und klar und deutlich heißt nicht, dass die Aussprache Deiner Worte verständlich sein soll. Nein […]

Du musst in Java nicht jede Exception fangen

Java Exception fangen

Kennst du die Metapher mit dem Jongleur und den Bällen? Ein Jongleur hält drei Bälle in der Luft, dann vier und irgendwann fünf. Aber irgendwann ist es genau ein Ball zu viel. Und Alles bricht zusammen. Ja ein Ball zu viel, kann alles versauen. 🙂 Und so ist es doch immer im Leben. Du kannst […]

So erstellst du deine ersten Java Klassen mit Eclipse

Java Klassen sind Baupläne für Java Objekte. Und da Java eine objektorientierte Programmiersprache ist, sind Java Klassen somit ein elementarer Bestandteil. In diesem Beitrag möchte ich dir zeigen, wie du eine Java Klasse in Eclipse erstellen kannst. Ich möchte dir außerdem zeigen, was physikalisch in deinem Projekt passiert. Ganz zum Schluss zeige ich dir noch, […]

Nutze das Keyword this für deine Java Konstruktoren

Java konstruktoren this

Es ist gemein. Wahrscheinlich hast den Beitrag zu den lokalen Variablen gelesen. Vielleicht hast du auch den Artikeln zum Anlegen und Überladen von Java Konstruktoren gelesen. Und wenn du die beschriebene Inhalte selbst ausprobiert hast…… Dann hast du dir wahrscheinlich sehr viele lokale Variablennamen für die Parameterliste ausdenken müssen.