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

Jetzt lerne ich Java 6

Abstrakte Klassen und Methoden

Testen Sie unsere 2016 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Nach der Veränderung von Methoden und dem Verhindern dieser Veränderung folgt nun noch die Lösung für das Problem, wenn Sie andere Entwickler dazu zwingen möchten, Methoden selbst zu implementieren.
04:19

Transkript

Wo wir ja eben noch versucht haben, zu verhindern, dass irgendjemand unsere Klasse ableitet oder irgendwelche Methoden oder Eigenschaften überschreibt in seiner abgeleiteten Klasse, gibt es auch noch genau den Gegenpart. Sie können Leute dazu zwingen, Ihre Klasse abzuleiten, oder auch eine Methode selbst zu implementieren. Das bedeutet, Sie können eine Klasse schreiben, die sozusagen nur eine Vorlage ist. Die nennt sich dann eine abstrakte Klasse. Und da drin steht schon mal, welche Eigenschaften und welche Methoden Sie sich vorstellen und wie das Ganze funktionieren soll. Aber Implementierung - die muss in einer abgeleiteten Klasse durchgeführt werden. Hört sich kompliziert an? Nee. Ist das nicht vom Prinzip her. Wir müssen nur ein paar Dinge jetzt hier beachten. Wir gehen mal in die Tier-Klasse hier und sehen hier getBegruessung. GetBegruessung fällt mir auf, ist so unterschiedlich bei den unterschiedlichsten Arten von Tieren, dass es eigentlich überhaupt keinen Sinn macht, dass das Tier eine Begrüßung bekommt. Aber jeder Fisch, jeder Vogel und ähnliches hat ja seine Art zu begrüßen. Das heißt, es darf nicht vergessen werden, dass begrüßt werden soll. Und genau das ist ein Fall, von dem ich sagen würde: hey wir sagen, dass wir eine getBegruessung benötigen in den abgeleiteten Klassen. Aber hier im Tier implementieren wir sie gar nicht. Wir machen sie abstrakt. Abstrakte Methoden sitzen keinen Body mehr. Das bedeutet, wir implementieren sie gar nicht mehr. Wäre auch Blödsinn. Hier legen wir fest, wie diese Methode aussehen soll. Also, sie soll "public" sein, soll ein String sein … eben soll sie also heißen und setzen jetzt zwischen "public" und dem Typ hier das Wort "abstract". Und anschließend müssen wir hinten noch ein Semikolon setzen, weil sonst das einen Java-Fehler hervorruft. Und wenn wir das jetzt mal kurz speichern, dann wären wir soweit zufrieden. Jetzt sind Leute, die Fisch nutzen, gezwungen, diese getBegruessung implementieren. Und das haben wir ja netterweise dort unten schon gemacht und Sie sehen jetzt hier einen netten Schraubendreher: Implements method getBegruessung of Interface de.ipartner.java.vererbung.Tier Das heißt, hier haben wir es wirklich implementiert und damit ist die Umgebung zufrieden. Wir muss noch eine Sache jedoch beachten. Denn dadurch, dass diese Methode hier abstrakt ist, ist natürlich die ganze Klasse auch nicht mehr fertig. Das heißt, hier diese Klasse direkt zu verwenden, ist ziemlicher Blödsinn. Und das tun wir ja noch hier im Main. Wir verwenden hier die Tier-Klasse, aber allein die getBegruessung ist überhaupt nicht implementiert. Und daher müssen wir jetzt noch ein bisschen was ändern. Wir müssen zuerst einmal dieser Klasse Tier sagen, dass diese ebenfalls abstrakt ist, dass die also erstmal fertig gemacht werden muss. Und von abstrakten Klassen kann man logischerweise hier keine Instanz ziehen. Daher kommentieren wir das kurz aus. Und jetzt können wir kompilieren. Wir bekommen keinen Fehler mehr. Wir sehen, das Ganze funktioniert. Nemo, Begruessung ist auch brav mit seinem Blub, Blub, Nemo. Wenn ich jetzt bei Nemo einfach hingehen würde, würde hier die Begrüßung einfach mal auskommentieren. Wir haben aber festgelegt, dass alle Tiere irgendwie begrüßen. Testen wir das Ganze, bekommen wir einen Fehler. Wir erweitern die Tier-Klasse, wir leiten uns davon ab. Und hier sehen wir: hör mal zu, Fisch ist selber nicht abstrakt. Dann würde die Entwicklungsumgebung ein Auge zudrücken. Dann müssten wir eben in der nächst abgeleiteten Klasse implementieren. Und wir haben eben vergessen, die Methode getBegruessung zu überschreiben. Und das müssen wir. Also so können wir auch mit Hilfe von abstrakten Methoden Vorgaben machen und dann entsprechen in abgeleiteten Klassen sicherstellen, dass Methoden/Eigenschaften und ähnliches vorhanden sind, die wir benötigen.

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!