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

Jetzt lerne ich Java 6

Eigenschaften verdecken

Testen Sie unsere 2016 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Fügen Sie in der erbenden Klasse eine Methode mit demselben Namen ein wie in der übergeordneten, hat diese Vorrang. Das ist auch logisch, aber was ist zu tun, wenn Sie auf eine höher liegende Eigenschaft zugreifen möchten?
04:55

Transkript

Sie haben das System der Überschreibung von Konstruktoren und auch von Methoden bereits gesehen. Ich möchte an diesem Beispiel das Ganze gerne noch mit Eigenschaften zeigen und das nennt man Verdeckung. Ich möchte gerne, dass Tiere uns begrüßen können. Und zwar, das die Allgemeine aber auch Fische im Speziellen. Und daher, die ist zuerst einmal hier in meiner Tier-Klasse und lege hier oben eine "private" an. Das ist ein String begruessung = "Hallo, ich bin ein Tier!" Und wir implementieren auch direkt schon mal hier unten eine "public. Gibt ein String zurück, getBegruessung. Somit können uns jetzt alle Tiere begrüßen. Testen wir das. Gehen wir also hierhin. Und lassen uns zuerst einmal hier oben von Bernd, einem normalen Tier, begrüßen: a.getBegruessung. Und das Ganze machen wir jetzt unten auch bei Nemo, unserem Fisch. Er hat hier es dann "b". Und lassen wir das mal laufen. Wir sehen okay, im Moment begrüßen Bernd und Nemo uns mit der Tierbegrüßung. Ganz klar. Das bedeutet, hier hat Nemo von uns die Begrüßung geerbt aus Tier. Und jetzt wollen wir natürlich eine etwas passendere Begrüßung für Nemo machen, denn unter Wasser spricht sich dies nicht so gut. Wie macht man das? Nun, wir überschreiben wieder. Es heißt, wir gehen hier einfach mal nach Tier und schauen uns an: okay, diese Begrüßung hier, die greift natürlich auf die variable Begrüßung hier innerhalb dieser Klasse Tier zu. Und das wollen wir nicht. Das heißt, wir müssen getBegruessung ändern. Naja, kopiere ich mir das einfach hier raus, nach Fisch hinein. Und kann nun hier innerhalb von Fisch Begrüßung wieder festlegen. Das heißt, ich hole mir auch h genau hier, diese Begrüßung auch aus Tier heraus, hier in den Fisch hinein, leg ihn hier oben an. Und schreibe dann irgendwie: Blub, Blub, Nemo… oder so… Und da war's. Das heißt, ich habe jetzt hier die Methode überschrieben und auch die alte Eigenschaft "Begrüßung" überdeckt. Kompilieren wir das. Und Sie sehen, das Ganze funktioniert. So können Sie also das relativ einfach erweitern. Aber die Überdeckung kann auch noch ein bisschen mehr. Denn was würde passieren, wenn ich in der Fisch-Klasse hier oben keine Begrüßung definieren würde? Nun, dann würden wir einen Fehler bekommen. Denn hier wird uns gesagt, dass Begrüßung "private" ist innerhalb von Tier. Dadurch dass wir in Tier die Begrüßung hier oben auf privat gesetzt haben, darf selbst Fisch, der von Tier abgeleitet ist, nicht darauf zugreifen. Wir dürfen nur darauf zugreifen, wenn getBegruessung innerhalb von Tier stehen würde. Da wir hier aber das nachträglich überschrieben haben, bleiben uns zwei Wege: Wir könnten getBegruessung anders implementieren und sagen: okay, wir rufen hier, statt Begrüßung zurückzugeben, "super.getBegruessung" auf. Das gibt unseren String zurück und den geben wir weiter. Aber damit haben wir wieder die Tierbegrüßung. Aber es ist möglich aus einer überschriebenen Methode mit Hilfe von "super" auf Originalmethode wieder zuzugreifen. Wenn wir das aber nicht wollen, könnten wir jetzt sagen: okay wir geben Begrüßung raus. Diese Begrüßung ist jedoch uns hier nicht bekannt und daher könnten wir gegebenenfalls in der Tier-Klasse sagen, dass diese Begrüßung nicht "private" ist, sondern diese Begrüßung ist protected. Als wir über die Zugriffsmodifizierer gesprochen haben, habe ich erwähnt, dass protected folgende Spezifika hat: Protected ist von außen erst einmal nicht zugreifbar, außer bei Klassen, die von dieser Klasse hier abgeleitet sind. Egal in welchem Paket sie liegen. Da die Klasse Fisch abgeleitet ist von Tier, kann diese nun natürlich zugreifen auf Begrüßung. Und auch dann sollten wir die Tierbegrüßung bekommen. Ich hoffe, das System ist damit etwas klarer geworden.

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!