Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

Jetzt lerne ich Java 6

Konstruktoren überladen

Testen Sie unsere 2021 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Der Konstruktor ist ja auch 'nur' eine Methode - also ist ein Überladen des Konstruktors in Java möglich. Dabei müssen Sie aber eine Vorgabe beachten, weil sonst der Compiler eine unschöne Fehlermeldung auswirft!
05:44

Transkript

Wir haben im letzten Film die Konstruktoren kennengelernt. Jetzt wollen wir unsere Lemming-Klasse noch etwas aufbohren. Unsere Lemmings bekommen alle ein Alter. Das gibt dann in der Java-int. Und daher brauchen wir jetzt nicht nur einen Konstruktor, sondern gegebenenfalls mehrere. Wir beginnen vielleicht erst einmal mit unserem absoluten Standardkonstruktor. Was passiert, wenn wir alle Lemming ins Leben rufen, denen wir keinerlei Parameter übergeben? Dann bauen wir einen "public Lemming". Und hier ist eben eine wichtige Vereinbarung: Konstruktoren heißen immer genauso wie die Klasse. Da dran erkennt eben Java, dass es ein Konstruktor ist. Also "public Lemming", es wird ohne Parameter aufgerufen. Was machen wir? Wir setzen zuerst den Namen, aber da haben wir noch nichts. Also sagen wir: name ist gleich "unknown". Und bekam der Lemming: alter ist gleich 0. Ja, aber ist auch ganz logisch. Und weil Lemminge so freundliche Tiere sind, rufen wir direkt "Hallo, ich lebe!", sobald sie ins Leben gebracht werden. Testen wir auch das. Und wir sehen: Fred wurde geboren. Hallo, ich lebe! Der Lemming heißt "unknown", weil wir es ihm noch nicht gesagt haben. Nun, jetzt haben wir also eine wunderschöne Art, Lemminge ins Leben zu bringen. Aber jetzt haben wir natürlich hier noch unseren weiteren Konstruktor. Der, an den ein String übergeben wird. Den müssten wir jetzt hier auch entsprechend anpassen. Denn wir sehen jetzt hm… Alter müssten wir noch anpassen und natürlich die Nachricht müssten wir auch anpassen. Und das wäre jetzt relativ viel Arbeit, denn wir müssten jetzt hingehen und sagen: alter ist gleich 0. Und hier auch das weitere. Also das ist recht nervig. Und da können wir uns helfen lassen. Wir können den Standardkonstruktor aus jedem anderen beliebigen Konstruktor auch wieder aufrufen. Und das ist eine ganz praktische Geschichte, denn jetzt machen wir in der ersten Zeile dieses Konstruktors hier einen Aufruf des Standardkonstruktors. Dann wir der schon mal Ablaufen gelassen und dann überschreiben wir einfach die Eigenschaften. Haben wir. Und damit ist die Sache gegessen. Dieser Aufruf des Konstruktors geht wieder mit "this", also dieselbe. Und dass der Konstruktor sein soll, setzen wir noch jetzt mal runde Klammern dahinter. Und damit wird dieser Konstruktor hier aufgerufen. Wurde dieser aufgerufen, stehen wir wieder hier im Skript, und belegen den Namen jetzt eben mit dem Wert, der hier übergeben worden ist. Wichtig ist - dieser Aufruf des Konstruktors muss sofort erfolgen. Sie können nicht zuerst den Namen überschreiben und dann erst den Konstruktor aufrufen. Das wird dann einen Fehler produzieren. Versuchen wir das auch noch kurz. Ich nehme den einfach mal, setze hier an die falsche Stelle. Und Sie sehen, das findet Java nicht sonderlich gut. Hier steht's auch: call to this must be first statement in construktor. Okay. Ist auch relativ logisch, denn es sind ja die grundlegendsten Einrichtungsarbeiten, die hier im Standardkonstruktor dann stehen. Damit haben wir also unseren Konstruktor, der mit einem String arbeitet. Und können jetzt hier vorne Fred einen Namen wieder mitgeben. Und da wir das Ganze laufen lassen, sehen wir, er schreit "Hallo, ich lebe!" Und er heißt trotzdem direkt "Fred", ohne dass wir jetzt irgendwelche komplizierte Klimmzüge hier machen müssten. Er hat eben den Namen hier übernommen. Zuerst Fred mit "unknown" initialisiert, sein Alter auf 0 gesetzt. Hat gerufen "Hallo, ich lebe!", und hat danach den Namen überschrieben mit Fred. Und deshalb heißt er jetzt Fred. Und Schluss. Und das können wir jetzt natürlich weiter spielen. Wir können auch sagen: naja, es könnte auch sein, dass Lemminge irgendwann einwandern. Das heißt, die plötzlich auftauchen. Dann haben wir plötzlich einen neuen Lemming. Aber der ist dann nicht mehr 0 Jahre, sondern der ist dann schon älter. Also: public Lemming. Und es kann sein, dass der, wie gesagt, einen Namen hat und schon ein Alter mitbringt. Ein Integer "a". Und ganz klar, zuerst muss der Lemming wie immer ins Leben gerufen werden. Dann überschreiben wir einfach den Namen. Und wir überschreiben das Alter. Wenn wir jetzt also hier hingehen und hier einfach noch einen Lemming gründen: "georg" ist auch ein "neuer Lemming", am Rigel hat er zugewandert. "Georg" und der ist schon 4 Jahre alt. Und dann lassen wir hier unten "georg" einfach mal ausgeben. Ja, und wir sehen jetzt also, dass Georg hier entsprechend nun initialisiert wird. Jetzt haben wir also gesehen, wie Sie Konstruktoren selber überladen können, den einfachen Konstruktor aufrufen können und so Ihre Initialisierungsarbeit machen können. Ein Kollege des Konstruktors ist übrigens der Destruktor. Und zu dem kommen wir gleich.

Jetzt lerne ich Java 6

Steigen Sie ein in die Programmierung mit Java 6, lernen Sie die Grundlagen kennen und unternehmen Sie anschließend Ihre ersten Schritte in der objektorientierten Programmierung.

12 Std. 27 min (98 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!