Methoden

Mit dem Laden des Videos akzeptierst du die Datenschutzerklärung von YouTube. Wenn du die Menge an Daten reduzieren möchtest, die YouTube von dir sammelt, solltest du dich vorher aus deinem YouTube-Account ausloggen, das Speichern von Cookies für das Google-Ads-Programm deaktivieren und/oder Cookies im Browser blockieren.
YouTube immer automatisch ladenInhaltsverzeichnis
Als Text lesen
Ab jetzt fängt es an Spaß zu machen!
Bisher hast du die komplette Programm-Logik immer so gut wie komplett in die main
-Methode geschrieben. Damit ist jetzt Schluss! Ich präsentiere dir hiermit Methoden:
Eine Methode ist ein Programm-Stück, das (wie der Konstruktor) Parameter entgegen nimmt und irgendetwas in deinem Objekt macht. Anschließend wird ein Wert zurück gegeben (returned).
Methoden sind also quasi Daten-Fabriken, die gewisse Inputs bekommen und daraus neue Outputs erzeugen. Außerdem kann eine Methode auch den Zustand von Objekten verändern.
In diesem Beispiel nimmt die Methode square
einen Parameter x
entgegen und erzeugt eine neue Zahl, die dem Quadrat von x
entspricht. return
ist hierbei das Keyword, das die Ausführung der Methode beendet und den Wert (hier result
) zurückgibt. Nachdem return
ausgeführt wurde, können keine weiteren Statements innerhalb der Methode abgearbeitet werden. Das int
ganz oben links in Zeile 1 ist der Typ des Rückgabe-Werts. Diese Methode produziert also ein int
.
Um eine Methode aufzurufen, verwendet man folgende Schreibweise mit in Klammern übergebenen Parametern:
square
ähnelt sehr einer mathematischen Funktion, die einen Wert entgegen nimmt und einen neuen erzeugt, ohne dabei Nebeneffekte auf Zustände von Objekten zu haben. Deshalb werden solche Methoden auch oft Funktion genannt.
Wie beschrieben können Methoden aber auch den Zustand eines Objekts verändern:
Die Methode increaseWidth
verändert die Breite des Rechtecks um den Wert amount
und gibt die neue Größe zurück.
Methoden können auch mehrere Parameter haben:
...Oder keine Parameter haben:
...Oder keinen Rückgabewert haben. In diesem Fall wird der return
-Type als void
(engl. "Leere", "Nichts") angegeben:
Hiermit ist also ein weiteres Rätsel der main
-Methode gelüftet: void
steht dafür, dass main
lediglich eine Prozedur ist, die zwar Befehle ausführt, aber keinen Rückgabewert erzeugt.
Während eine Methode 0 bis beliebig viele Parameter haben kann, gibt es immer entweder keinen oder genau einen Rückgabewert. Es ist in Java unmöglich, mehrere Werte zurück zu geben. (Dieses vermeintliche Problem lässt sich aber auf unterschiedliche Arten umgehen.)
Methoden lassen sich in einem UML Klassendiagramm im unteren Block auflisten:
Implementiere folgende Programmteile basierend auf der vorherigen Aufgabe:
- Ein Konstruktor, der die drei Parameter
id
,firstName
, undlastName
entgegennimmt und die Objektattribute entsprechend setzt. Das vierte Attribut (friends
) soll immer mit einem neuen leeren Array initialisiert werden. - Eine Methode
String fullName()
, die den Vor- und Nachnamen desUser
s mit Leerzeichen getrennt zurück gibt. - Eine Methode
boolean hasMoreFriendsThan(User user)
, die genau danntrue
zurück gibt, wenn das eigenefriends
Array größer ist, alsuser.friends
- Eine Methode
boolean hasFriend(User user)
, die genau danntrue
zurück gibt, wennuser
infriends
enthalten ist - Eine Methode
addFriend(User user)
, die keinen Rückgabewert hat, sondernfriends
durch ein neues Array ersetzt, das alle Elemente aus friends enthält, und zusätzlich als letztes Elementuser
.addFriend()
soll also das existierendefriends
Array um einen weiterenUser
erweitern.

Mit dem Laden des Online Editors akzeptierst du die Datenschutzerklärung von JDoodle, einem Produkt der Nutpan pty Ltd (Australien). JDoodle verwendet die Tools reCAPTCHA und Google Analytics, wodurch Daten an Google übertragen werden können. Ich habe leider keinen Einfluss auf diesen Prozess. Du kannst Google Analytics über ein Browserplugin deaktivieren.
Online Editor immer automatisch ladenTeste anschließend deine Eingaben, indem du über die addFriend()
Methode den einzelnen User
Objekten Freunde hinzufügst und dann die restlichen Methoden mit beispielhaften Eingaben ausführst.
Häufige Fehlerquellen
error: ';' expected
bzw.cannot find symbol
: Klammern bei Funktion vergessenNullPointerException
: Im Konstruktorfriends
nicht initialisierterror: not a statement
:return
vergesssenreturn
-Typ falsch- Auf falsches
User
Objekt bezogen: Achte immer darauf, ob du gerade denUser
der Klasse meinst (Objektattribut), oder den übergebenenUser
(lokale Variable). for
-Schleife(n) falsch- Indizes bzw. größe von Arrays falsch