Java 7 Grundkurs

Methoden überladen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Wie sich Methoden überladen lassen und was das eigentlich bedeutet, das vermittelt Ihnen der Autor in diesem weiteren Schulungsvideo.
04:13

Transkript

Wie lassen sich Methoden überladen und was bedeutet das eigentlich, wenn wir das tun? Schauen wir uns dazu diese Klasse "Auto" an. In dieser Klasse gibt es eine ganze Menge autotypische Methoden: Beschleunigen, Bremsen, Anhalten, dann können wir dem Auto einen Namen geben und uns den Namen holen. Wir können nachschauen, wie schnell wir gerade fahren. Es gibt eine Methode für eine Statusmeldung und hier haben wir eine Methode zum Hupen. Diese Hupenmethode nimmt eine Anzahl entgegen und hupt dann so oft, wie das die Anzahl angibt. Der Benutzer eines solches Autos muss also jedes Mal, wenn er die Hupenmethode aufruft, eine Zahl übergeben. Nehmen wir an, dieses Auto ist jetzt in Produktion gegangen. Es wird von vielen Autofahrern verwendet und langwierige und aufwendige Untersuchungen haben ergeben, dass die meisten Autofahrer eigentlich nur einmal hupen wollen und dass sie es als sehr störend empfinden, wenn sie diese "1" jedes Mal immer noch mit dazu schreiben müssen. Für diese Autofahrer bauen wir jetzt einfach eine zweite Methode ein, die keinen Parameter bekommt. Die Methode heißt auch "Hupen", gibt auch nichts zurück, nimmt aber eben keinen Parameter. Jetzt könnte ich für die Implementierung natürlich hier oben einfach diese Zeile hier da herunterkopieren. Das wäre aber sehr unschön. Wir hätten an zwei Stellen denselben Code. Wenn wir später das Auto ausbauen möchten, dass es vielleicht tatsächlich ein Signal gibt, also ein Geräusch macht, dann müssten wir an zwei Stellen im Code Änderungen vornehmen. Deswegen machen wir das anders. Wir machen stattdessen Codewiederverwendung, d.h. wir verwenden aus unserer Hupenmethode diese Hupenanzahlmethode. Und zwar so: Wenn wir jetzt das Hupverhalten intern verändern möchten, dann müssen wir das nur an einer einzigen Stelle machen, denn diese Hupmethode hier unten leitet ja im Prinzip einfach nur an die andere Methode weiter. Um diese Implementierungsdetails geht es hier aber nur am Rande. Worum es eigentlich geht ist Folgendes: Wir haben zwei Methoden, die denselben Namen tragen. Ein Autobesitzer, der jetzt eine dieser beiden Methoden aufrufen möchte, muss natürlich trotzdem noch eine Möglichkeit haben, zu sagen, welche der beiden er meint. In irgendwas müssen sich diese beiden Methodenaufrufe also unterschieden. Sie unterscheiden sich in den Parameterlisten. Die erste Methode hat einen Parameter und zwar einen Int-Parameter, die andere Methode hat gar keinen Parameter. Übergibt der Aufrufer also keinen Parameter, dann meint er die untere Methode, übergibt er einen Int-Parameter, dann meint er die obere. Wenn wir ganz allgemein vom Überladen von Methoden sprechen, dann meinen wir damit, dass wir mehrere Methoden haben, die denselben Namen tragen, d.h. wir überladen diesen Namen quasi mit mehreren Bedeutungen. Um den Compiler glücklich zu machen, müssen sich diese Methoden in ihren Parameterlisten unterscheiden. D.h. entweder in der Anzahl der Parameter oder wenn wir die gleiche Anzahl von Parametern haben, dann müssen die von verschiedenen Typen sein. Damit ist abgesichert, dass der Compiler immer anhand der übergebenen Argumente entscheiden kann, welche der Methoden nun gemeint ist. Das Überladen hat den Vorteil, dass wir uns nicht immer wieder neue Methodennamen ausdenken müssen, sondern dass wir für ähnliches oder gleichartiges Verhalten auch denselben Methodennamen benutzen können, solange wie gesagt sich die Parameterlisten irgendwie unterscheiden. Auch in der Java-Standardbibliothek finden wir das Überladen an vielen Stellen. Diese Methode PrintLine ist bspw. überladen. Ich zeige Ihnen das einmal hier im Code, ich nehme das einmal hier hinten weg, jetzt drücke ich Strg+Leertaste und dann sehen wir, es gibt viele verschiedene Varianten von PrintLine. Erst mal ohne Argument, dann mit einem Object, mit einem String, mit einem Boolean, Char, Int, Float usw. Jede einzelne dieser Implementierungen sorgt dafür, dass der übergebene Datentyp korrekt dargestellt wird. Denn ein String möchte z.B. anders dargestellt werden als ein Double. Und ein Object anders als ein Int. Beim Int wird nämlich die Zahl ausgegeben, beim Object wird toString vom Object aufgerufen und das, was dabei rauskommt, wird dann ausgegeben. Sie sehen also, überladen bedeutet: Selber Methodenname, unterschiedliche Parameterlisten und zwar vom Typ her verschieden. Denn die Variable heißt überall x, aber das spielt keine Rolle, es geht wirklich nur um den Typ.

Java 7 Grundkurs

Machen Sie sich mit den Grundlagen der Java-Programmierung vertraut und lernen Sie die Syntax der Sprache sowie das Konzept der objektorientierten Softwareentwicklung kennen.

8 Std. 32 min (66 Videos)
Derzeit sind keine Feedbacks vorhanden...

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!