Skip to main content

Java Übung 11 – Java Objekte in Java Methoden übergeben

In dieser Java Übung möchte ich dir zeigen, dass du auch in Klassenmethoden auf Objekte und deren Instanzvariablen zugreifen kannst.

Schau dir dazu einmal diesen Java Code an.


public class Umwandlung {
	private int x;

	public int getX() { // getter Methode
		return x;
	}

	public void setX(int x) { // setter Methode
		this.x = x;
	}

	public static void main(String[] args) {
		Umwandlung umwandler = new Umwandlung(); // neues Objekt wird erzeugt
		umwandler.setX(22); // Zuweisung der Instanzvariablen
		System.out.println(umwandler.getX()); // Rückgabe des Wertes
	}
}

Die Java Klasse verfügt über eine Instanzvariable mit den originellen Namen x. 🙂

Den Wert der Variablen kannst du über eine setter-Methode festlegen.
Über die getter-Methode kann der Wert erfragt und zurückgegeben werden.

Zu Testzwecken wurde in der main-Methode ein Objekt erzeugt.
Und der Wert der Instanzvariablen wurde für dieses Objekt auf 22 festgelegt.

Die Bildschirmausgabe ruft den getter auf und gibt somit den Wert zurück.

Soweit alles klar.

Jetzt kommt etwas, was du so eigentlich nie machst und sonst auch nicht machen solltest.
Es dient lediglich dazu, dass du den Umgang mit den Java Methoden übst.

Lange Rede- kurzer Sinn… 🙂
Schreibe den getter und setter um.
Und zwar – biete die getter- und die setter Methode als statische Methode an.


Die Lösung dieser Java Übung liegt im Überladen der Methoden.

Du musst beide Methoden überladen.

Beim Überladen von Java Methoden ist es wichtig, dass sich die Parameterlisten der Methoden unterscheiden.
Der Setter verlangt immer einen Parameter.
Dieser entspricht immer dem Datentyp der Instanzvariable.
Im Methodenrumpf erfolgt die Zuweisung durch die this referenz.


public class Umwandlung {
	private int x; //Instanzvariable vom Datentyp Integer

	public void setX(int x) { // setter Methode erwartet einen Parameter vom Datentyp der Instanzvariablen
		this.x = x; //Zuweisung über die this-Referenz
	}
}

Wenn du die setter-Methode als statische bzw. Klassenmethode anbietest, musst du die Parameterliste erweitern.
Und zwar musst du dann als Parameter eine Referenzvariable vom Datentyp der Java Klasse anbieten.

Im Methodenrumpf erfolgt dann die Zuweisung nicht über die this-Referenz.
Sondern du greifst auf die übergebene Referenzvariable zu.

Und so sieht der Java Code dazu aus.


public class Umwandlung {
	private int x; //Instanzvariable vom Datentyp Integer
	
	static public void setX(Umwandlung u, int x) { // Referenzvariable wird übergeben
		u.x = x; //Zugriff auf die Instanzvariable der Referenzvariablen
	}
}

Analog zum setter kannst du auch die getter-Methode wandeln

Der getter erwartet im nichtstatischen Kontext keinen Parameter.

Als statische Methode musst du ebenfalls ein Objekt bzw. eine Referenzvariable übergeben.

Der Java Code zum getter würde dann so aussehen:


public class Umwandlung {
	private int x; //Instanzvariable vom Datentyp Integer
	
	static public int getX(Umwandlung u) { // statische getter Methode mit Referenz
		return u.x; //Rückgabe des Wertes der Referenz
	}
}

Und jetzt kannst du in der main-Methode ein Objekt erzeugen.
Und dann rufst du die statischen Java Methoden auf.

Achte darauf, dass du in der Parameterliste die Referenzvariable übergibst.

Und der komplette Code mit allen Klassen- und Instanzmethoden:


public class Umwandlung {
	private int x; //Insstanzvariable vom Datentyp Integer

	public int getX() { // getter Methode
		return x;
	}
	
	static public int getX(Umwandlung u) { // statische getter Methode mit Referenz
		return u.x; //Rückgabe des Wertes der Referenz
	}


	public void setX(int x) { // setter Methode erwartet einen Parameter vom Datentyp der Instanzvariablen
		this.x = x; //Zuweisung
	}
	
	static public void setX(Umwandlung u, int x) { // Referenzvariable wird übergeben
		u.x = x; //Zugriff auf die Instanzvariable der Referenzvariablen
	}

	public static void main(String[] args) {
		Umwandlung umwandler = new Umwandlung(); // neues Objekt wird erzeugt
		setX(umwandler,22); // Methodenaufruf mit zwei Argumenten
		System.out.println(umwandler.getX(umwandler)); // Rückgabe des Wertes
	}
}

Zusammenfassung:

  • Du kannst statischen, aber auch Instanzmethoden Objekte übergeben.
  • Wenn du im Methodenrumpf einer Klassenmethode auf eine Instanzvariable zugreifen möchtest, musst du auf die übergebene Referenz per Punktnotation zugreifen.
  • Die getter und setter werden im Normalfall nur als Instanzmethoden angeboten.
    Diese nichttypische Umwandlung ist lediglich als Beispiel für diese Java Übung gedacht gewesen.

Ähnliche Beiträge

Java Übung 26 – Das erste kleine Java Spiel

Java Übung Zahlenraten

In dieser Java Übung geht es darum ein kleines Java-Spiel zu erstellen. Und zwar Zahlen raten. Was kannst du dir darunter vorstellen? Du gibst einen bestimmten Wertebereich an. Zum Beispiel 0 bis 100. Und das Java Programm erstellt eine Zufallszahl in diesem Bereich. Dann fordert dich das Programm auf, die Zahl zu raten. Du gibst […]

Verwalte deine Java Klassen in packages

java klassen verwalten

Es macht durchaus Sinn deine Java Klassen in verschiedenen Paketen zu organisieren. Wieso? Es sprechen mehrere Gründe dafür: Du kannst doppelte Klassennamen verwenden Du kannst deinen Code oder deine Klassen inhaltlich trennen Du kannst Hierarchien abbilden. Und genau um diese Dinge geht es in diesem Beitrag

Java Übung 31: Speichere deine Würfe im Array

Java Übung Array Würfelspiel

In dieser Java Übung soll ein Würfelspiel simuliert werden. Lege eine Klasse namens, Würfelspiel an. Diese Klasse enthält eine statische Methode, namens würfeln(). Diese Methode erwartet einen Parameter vom Datentyp Integer, namens „anzahlWuerfe“. Diese Variable/Parameter repräsentiert die Anzahl der Würfe. Nachdem der Methode die Anzahl der Würfe übergeben wurde, soll die Methode Zufallszahlen zwischen 1 […]

So verwendest du die Java Codeblöcke zur Automatisierung

Java Codeblöcke

In diesem Beitrag geht es um den Einsatz von Java Codeblöcken oder Initialisierungsblöcken. Viele Wege führen nach Rom. Oder Alle Wege führen nach Rom. Heißt es in einem alten Sprichwort. Und so ähnlich ist es bei der Java Programmierung. In diesem Beitrag möchte ich dir einen weiteren Weg vorstellen, wie du Variablen eines Java Objektes […]

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

Java Vererbung:
Die 3 Schablonen für deine Java Objekte

Java Vererbung Beispiel

Im letzten Beitrag habe ich dir das Java Vererbung Konzept an einem Beispiel vorgestellt. In dem Beispiel-Rollenspiel gab es Klassen zu Helden und Superhelden. Ich habe dir die Vererbungshierarchien theoretisch erläutert. Jetzt geht es ans Praktische. In diesen Beitrag lernst du: Wie du bestehende Java Klassen erweiterst Wie du Objekte aus den erweiterten Klassen erstellen […]

10 ganz nützlichen Feature der Klasse Java Math

In diesem Beitrag geht es um eine spezielle Java Klasse. Die Klasse nennt sich Java Math. Diese ist in der Standardbibliothek von Java enthalten. Warum solltest du diese Klasse kennen? Die Math Klasse bietet dir einen Menge Methoden an, welche zur Berechnung von mathematischen Gleichungen ganz hilfreich sind. Aber auch für Nichtmathematiker ist etwas dabei. […]

Java Übung 16 – Bestimme den größten gemeinsamen Teiler

Java Übung Teiler

In dieser Java Übung möchte ich, dass du den größten gemeinsamen Teiler zwei Zahlen ermittelst. Ich möchte, dass du das Ganze mit einer while-Schleife umsetzt. Und wie? Du legst eine neue Klasse „GGT“ (größter gemeinsamer Teiler) an. In diese Klasse implementierst du eine Klassenmethode „berechneGGT“. Diese erwartet zwei Argumente vom Datentyp Integer.

So kannst du ein Java Programm starten und Argumente übergeben

Um ein Java Programm starten zu können, benötigst du immer die main-Methode. Das Programm startet immer genau an dieser Stelle. Alle lokalen Variablen, welche du in der Main Methode anlegst, kannst du dann im Programm nutzen. Auch alle Methoden, welche du innerhalb des Methodenrumpfes der main-Methode aufrust, werden ausgeführt. Was ist aber vor der main-Methode. […]

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