Skip to main content

Durch Instanzmethoden können deine Java Objekte richtig coole Sachen machen


Java Objekt Instanzmethode content

Du ahnst es.

Im letzten Artikel hast du von mir erfahren, wie du ein Java Objekt erstellst und wie du dann auf die Instanzvariablen des Objektes zugreifen kannst.

Bei den Instanzmethoden funktioniert es auch so.
Du erschaffst beliebig viele Java Objekte und per Punktnotation, greifst du auf die Methode des Objektes zu.

Und das Ganze machst du in der main Methode.

Und das war es dann auch schon.

Aber hier nochmal ganz konkret.
Unser bisheriger Code:

Code für die Klasse „Human“:

public class Human {
int size=156;//size in centimeter
String firstName;//Vorname als Textwert


void grow(int growthRate){
size=size+growthRate;
}
}


Code der Klasse „ProgrammStart“:

public class ProgrammStart {
public static void main (String [] args){

Human mathias=new Human();
Human stefan=new Human();
stefan.size=182;
mathias.firstName="Mathias";
stefan.firstName="Stefan";
System.out.println(mathias.firstName+" ist "+mathias.size+" Zentimeter groß");
System.out.println(stefan.firstName+" ist "+stefan.size+" Zentimeter groß");
}
}

Im Code siehst du, dass wir per Punkt-Notation auf mathias.size, stefan.size , mathias.fistName usw zugreifen.
Wir haben somit den Zugriff auf die Variablen der einzelnen Java Objekte.

Und das Ganze stecken wir in die Klammer der System.out.println() Anweisung.
Das Ergebnis ist, dass uns eine Konsolenausgabe den Wert der Variablen zurückgibt.

Und jetzt stecken wir eine weitere Anweisung in die main Methode.
mathias.grow(25) und stefan.grow(10)

Code der Klasse „ProgrammStart“:

public class ProgrammStart {
public static void main (String [] args){

Human mathias=new Human();
Human stefan=new Human();
stefan.size=182;
mathias.firstName="Mathias";
stefan.firstName="Stefan";
System.out.println(mathias.firstName+" ist "+mathias.size+" Zentimeter groß");
System.out.println(stefan.firstName+" ist "+stefan.size+" Zentimeter groß");
mathias.grow(25);
stefan.grow(10);
}
}

Was passiert hier?
Du hast der grow-Methode den Parameter 25 übergeben.
Du erinnerst dich, dass diese Methode einen Parameter erwartet.

Klicke auf „Run“ und das Programm startet.

Und…..
Hat sich in der Konsolenausgabe etwas verändert?

Warum passiert eigentlich nichts?
Wenn du dir den Methodenrumpf, der grow-Methode, mal anschaust, wird zur ursprünglichen Variable „size“ der Wert des Parameters hinzuaddiert.

Mehr passiert nicht.

Wir haben die Methode als void Methode geschrieben und somit gibt diese auch nichts zurück.
Aber du kannst direkt in die grow Methode eine Anweisung schreiben.

Setze doch einfach mal die System.out.println() Anweisung in die grow-Methode ein.

Und in die Klammer schreibst du jetzt „size“.
Da das ganze wieder etwas blöd aussehen würde, verbindest du dies wieder mit der „firstName“ Variablen und einem netten Text.

Code für die Klasse „Human“:

public class Human {
int size=156;//size in centimeter
String firstName;//Vorname als Textwert


void grow(int growthRate){
size=size+growthRate;
System.out.println("Die Größe von "+firstName+" beträgt jetzt "+size);
}
}

Klicke nochmal auf Run, um das Programm zu starten.

Code der Klasse „ProgrammStart“:

public class ProgrammStart {
public static void main (String [] args){

Human mathias=new Human();
Human stefan=new Human();
stefan.size=182;
mathias.firstName="Mathias";
stefan.firstName="Stefan";
System.out.println(mathias.firstName+" ist "+mathias.size+" Zentimeter groß");
System.out.println(stefan.firstName+" ist "+stefan.size+" Zentimeter groß");
mathias.grow(25);
stefan.grow(10);
}
}

Jetzt wird beim Programmstart wieder die grow-Methode aufgerufen.

Und die grow-Methode addiert den Wert der size Variablen mit dem Wert, welchen du der Methode übergeben hast.
Und jetzt gibt sie eine Bildschirmausgabe aus.

Cool oder?

Aber was mache ich, wenn beide Menschen immer nur um 10 Zentimeter wachsen sollen?
Und das immer.
Die Methode soll immer nur um 10 erhöhen.

Dann darfst du der Methode beim Aufruf (in der main Methode) keinen Parameter übergeben.

Das bedeutet auch, dass du die Methode ohne Parameterliste anlegen musst.

Code für die Klasse „Human“:

public class Human {
int size=156;//size in centimeter
String firstName;//Vorname als Textwert


void grow(){ //Methode erwartet keinen Parameter
size=size+growthRate;
System.out.println("Die Größe von "+firstName+" beträgt jetzt "+size);
}
}

Schreib diese falsch angelegte Methode einmal so ab und schau was passiert.

Eclipse kann natürlich mit der Variablen „growthRate“ nichts mehr anfangen.

Ersetze deshalb in der Anweisung size=size+growthRate; die Variable durch einen Wert.
Beispielsweise 10.

Code für die Klasse „Human“:

public class Human {
int size=156;//size in centimeter
String firstName;//Vorname als Textwert


void grow(){ //Methode erwartet keinen Parameter
size=size+10;
System.out.println("Die Größe von "+firstName+" beträgt jetzt "+size);
}
}

Und niemand meckert mehr, oder?

Nicht ganz…
Schauen wir uns jetzt die main-Methode an.

Du siehst, dass wir durch die Anweisung grow(25); einen Parameter übergeben haben.
Unsere grow-Methode ist jetzt aber parameterlos.

Das heißt wir müssen die Parameter 25 und 10 aus dem Methodenaufruf löschen.
Und dann läufts wieder.

Code der Klasse „ProgrammStart“:

public class ProgrammStart {
public static void main (String [] args){

Human mathias=new Human();
Human stefan=new Human();
stefan.size=182;
mathias.firstName="Mathias";
stefan.firstName="Stefan";
System.out.println(mathias.firstName+" ist "+mathias.size+" Zentimeter groß");
System.out.println(stefan.firstName+" ist "+stefan.size+" Zentimeter groß");
mathias.grow();
stefan.grow();
}
}

Klicke auf „Run“ und los gehts.
Durch den Programmstart springt das Programm in die grow-Methode und rechnet zur „size“ Variablen den Wert 10 hinzu.

Was sagt uns das jetzt?
Du entscheidest also, ob du einer Methode einen Parameter übergeben willst, oder nicht.

Wenn du keinen Parameter übergeben willst, musst du die Methode parameterlos (kein Wert in den Klammern) aufrufen.

Wenn die Methode einen Parameter erwartet, musst du diesen beim Aufruf der Methode in die Klammer (Parameterliste) schreiben.

Na ist dein Spieltrieb geweckt?
Dann lass uns rumspielen….

Jetzt übergeben wir der Instanzmethoden einen weiteren Parameter

Ich möchte erreichen, dass wir mit zwei oder mehreren Wachstumsraten rechnen.

Also können wir doch einfach den „growthRate“ Parameter wieder in die Methode stecken und die Methode entsprechend anpassen.

Okay machen wir.
Jetzt übergeben wir aber noch einen weiteren Parameter „Anzahl der Wachstumsraten“ oder englisch „numberOfGrowthRate“.

Da dieser neue Parameter wieder eine Zahl ist, müssen wir wieder einen Integer Datentyp festlegen.
Beide Parameter werden durch ein Komma getrennt.

Du hast den neuen Parameter in die Liste eingefügt?

Toll dann müssen wir diesen noch in die Programmlogik integrieren.

Code für die Klasse „Human“:

public class Human {
int size=156;//size in centimeter
String firstName;//Vorname als Textwert


void grow(int growthRate, int numberOfGrowthRate){
size=size+growthRate*numberOfGrowthRate;
System.out.println("Die Größe von "+firstName+" beträgt jetzt "+size);
}
}

Was rechnet unsere Methode?

Als erstes werden beide Parameter mit einander multipliziert.
Denn Punktrechnung geht auch in Java vor Strichrechnung.

Und diesem Teilergebnis wird jetzt der Wert der Instanzvariablen hinzuaddiert.

Passen wir die main Methode noch an.

In der main Methode ist jetzt der Methodenaufruf parameterlos.

Wir müssen jetzt zwei Parameter in die jeweiligen Anweisungen eingeben und fertig.

Bei „stefan“ wähle ich jetzt 3 Durchläufe mit jeweils 15 Zentimetern.
Und bei „mathias“ wähle ich 4 Durchläufe mit jeweils 8 Zentimetern.
Bitte trenne auch hier die Parameter durch ein Komma.

Code der Klasse „ProgrammStart“:

public class ProgrammStart {
public static void main (String [] args){

Human mathias=new Human();
Human stefan=new Human();
stefan.size=182;
mathias.firstName="Mathias";
stefan.firstName="Stefan";
System.out.println(mathias.firstName+" ist "+mathias.size+" Zentimeter groß");
System.out.println(stefan.firstName+" ist "+stefan.size+" Zentimeter groß");
mathias.grow(15 ,3 ); //Wachstumsrate in cm: 15 , Anzahl der Wachstumsarten: 3
stefan.grow(8 , 4);//Wachstumsrate in cm: 8 , Anzahl der Wachstumsarten: 4
}
}

Dann lassen wir unser Programm mal rechnen.

Drücke auf „Run“, lehn dich zurück und genieß die Show. 🙂

Zusammenfassung:

  • Eine Instanzmethode kannst du auf allen Java Objekten per Punkt-Notation aufrufen.
  • Du kannst jeder Instanzmethode verschiedene Parameter übergeben.
  • Dabei solltest du nur beachten, dass du dies entsprechend im Methodenaufruf (Stichwort: main Methode) anpasst.
  • Du kannst in deinen Methodenrümpfen verschiedene Anweisungen einpflegen und diese dann ausführen lassen.

Na hast du etwas herumgespielt?
Welche Erfahrungen hast du gemacht?
Vielleicht möchtest du mir einen Kommentar unter diesen Beitrag schreiben.
Dann nutze doch bitte das Kommentarfeld direkt unter dem Beitrag.


Ähnliche Beiträge

So organisierst und verwaltest du ganz bequem deine Java Projekte

Du kennst das auch. Denn du bist ja fleißig. Und weil du so fleißig bist, hast du mitunter auch mehrere Java Projekte gleichzeitig laufen. Und dann kommt es vor, dass du enorm viele Java Projekte am Laufen hast. Und dein Package-Explorer wird extrem unübersichtlich. In diesem Beitrag möchte ich dir zwei Varianten vorstellen, wie du […]

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

3 Möglichkeiten – Java Strings verketten und zusammenfügen

Java Strings verketten

Kennst du dieses Relikt längst vergangener Tage? Ein Brief. Ja früher einmal war es üblich, Briefe zu schreiben. Lange bevor es Smartphones oder Email gab. Man stelle sich einmal vor…. Die Leute mussten sich hinsetzen mit einem Blatt und einem Stift – und richtig schreiben. Nein nicht tippen – schreiben. 🙂 Grausame Welt, oder? Aber […]

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

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

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

Java Konsolenausgaben mit formatierten Zahlen

Java Konsolenausgaben Zahlen

Java Konsolenausgaben erzeugst du mit der System.out.println()-Anweisung. Dies ist relativ einfach. Aber es ist mitunter nicht ganz praktisch. Und zwar immer dann, wenn Zahlen im Spiel sind. Die Zahlen welche dann auf deiner Java Konsole erscheinen, sind unformatiert. Sie haben zu viele Kommastellen. Oder für eine bessere Darstellung benötigst du den Tausenderpunkt. Vielleicht möchtest du […]

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 Übung 27 – Auf zur Mathe-Olympiade

Java Übung Mathe Olympiade

In dieser Java Übung möchte ich mit dir ein Programm erstellen, welches ein Mathematik-Test oder eine Mathe-Olympiade simuliert. Du kennst das vielleicht noch aus der Schule. Matheolympiade- Da wurden aus allen vier Grundrechenarten, Aufgaben formuliert. Die Schüler mussten diese Aufgaben lösen. Die Lehrer kontrollierten die Lösungen. Und der Schüler, welcher die wenigsten Fehler hatte – […]

So kannst du deine Eclipse Oberfläche anpassen

Eclipse anpassen

In diesem Beitrag möchte ich dir zwei ganz nette Features von Eclipse vorstellen. Es geht um Views und um Perspektiven. Wie du schon weißt, besteht Eclipse aus einer grafischen Oberfläche. Und in dieser Oberfläche stehen dir verschiedene Views zur Verfügung. Was ist so ein View?