Jetzt lerne ich Java 6

Einführung in die Vererbung

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Das Konzept der Vererbung hilft bei der Abstrahierung von Klassen, d.h. vom Allgemeinen immer spezieller zu werden und sich dabei unnötige Schritte zu ersparen. Am Beispiel der Tiere zeigt der Autor die Idee und ihre Vorzüge.
08:22

Transkript

In diesem Film wollen wir uns mit der Vererbung beschäftigen. Auch das ist ein Grundkonzept innerhalb der objektorientierten Programmierung und daher extrems wichtig. Die Vererbung hilft uns dabei, zu abstrahieren. Das bedeutet, vom allgemeinen immer spezieller zu werden, um uns unnötige Arbeit dabei zu sparen. Um Ihnen die Vererbung deutlich zu machen, habe ich ein Beispiel mir ausgedacht, was ich denke, ganz gut nachvollziehen kann. Wir wollen Klassen schreiben, um Tiere zu kategorisieren. Bei Tieren ist es so, dass es eine allgemeine Tierklasse geben wird. Jedes Tier hat meines Erachtens irgendwie einen Namen und ein Alter. Dann gibt es aber verschiedene Rubriken von Tieren. Es gibt Fische und es gibt Säugetiere zum Beispiel. Beides sind Tiere, ganz klar. Sie haben auch übrigens beide ein Alter und auch noch einen Namen. Für mich… Aber Fische haben Flossen und Säugetiere haben meistens Beine. In Anbetracht dessen an dieser Stelle müssten wir genauer werden. Und es ist Blödsinn, den Säugetieren alle Informationen mitzugeben, alle Methoden, die ein Tier haben muss, weil wir das hier auch für den Fisch machen müssten. Und an dieser Stelle hilft uns die Vererbung der objektorientierten Welt weiter. Wir werden jetzt zuerst einmal eine Klasse "Tier" schreiben. Darin werden wir erstmal die Eigenschaften/ Methoden festlegen, die alle Tiere haben. Und danach spezialisieren wir durch neue Klassen. Und die erben die Eigenschaften der allgemeineren Klasse. Also ich hab Reizen Projekt angelegt. In diesem Projekt befindet sich noch so ziemlich gar nichts bis auf eine main-Methode innerhalb meiner Hauptklasse. Das erste, was wir jetzt in unserem Projekt machen werden, ist - wir legen im gleichen Paket uns eine neue Java-Klasse an. Und diese Java-Klasse nennen wir "Tiere". Hier in dieser Tierklasse können wir jetzt beginnen, hier oben erst einmal in der Klasse selbst die Eigenschaften von Tieren festzuhalten. Wie gesagt, das ist ganz allgemein, völlig egal, welches Tier es ist. Nun. Ich nehme einen String für Namen des Tieres und ich nehme ein Integer für das Alter des Tieren. Dann können wir uns direkt um den Konstruktor kümmern. Wenn ein neues Tier angelegt wird, dann kann es sein, dass der Konstruktor erstmal leer ist. Dann begrüßen wir einfach nur die Welt. Es kann aber auch sein, dass jemand schon etwas freundlicher ist und den Tieren schon mehr Informationen mitgibt. Also scheiben wir das direkt hinein. Es kann nämlich sein, dass jemand schon direkt einen String mitgibt: n. Es wäre dann der Name des Tieres. Und wird das natürlich direkt belegt. Name ist gleich: n. So in der Art. Und dann natürlich auch dieses Tier "Hallo Welt, ich lebe!" schreien soll. Wird also aus diesem Konstruktor im ersten Schritt direkt der Standardkonstruktor aufgerufen. Und damit haben wir also unsere erste rudimentäre Tierklasse geschrieben. Sollen wir natürlich testen, ob das Ganze klappt. Zurück in unsere Hauptklasse. Wir brauchen jetzt ein Tier. Nennen wir, es ist mal: a. Und instanziieren dieses Tier noch mal ohne etwas. Hat funktioniert. "Hallo Welt, ich lebe!" - wunderbar. Und jetzt ein Tier, das vielleicht schon einen Namen hat. Nennen wir es "Bernd". Auch hier schreit es: "Hallo Welt, ich lebe!" Soweit sind wir also schon mal durch. Unser Tier hier hat also jetzt die Möglichkeit zu leben. Lassen wir noch ein Feld: wenn ein Tier geboren wird, sollte man sein Alter mal auf 0 setzen. Das ist auch noch ganz sinnig. Im nächsten Schritt sollten wir uns jetzt bereits Gedanken um die Zyklus-Modifizierung machen. Hier die Konstruktoren sind public. Denn ich möchte, dass wir beliebig erstmal Tiere instanziieren können. Hier oben die Eigenschaften, die möchte ich aber nicht public haben. Denn eigentlich geht das Alter und der Name keinen was an. Dafür sollen Sie passende Getter- und Setter-Methoden verwenden. Also, setz' ich diese erst einmal nur auf "private". Sie sind privat nur innerhalb der Klasse. Und damit die Leute jetzt wenigstens damit arbeiten können, müssten wir hier dann entsprechend eine Kommunikationsmethode nach außen machen. Und zwar: getName. Das gibt im Ganzen einen String zurück. Das sollten wir also implementieren, wenn wir schon dicht machen: return name. Das Gleiche können wir auch noch schnell für das Alter machen. Public, gibt ein Integer zurück, getAlter, return alter. Sie sehen also, wie so eine Klasse nun langsam entsteht. Hier der String schreibt sich natürlich groß. Und damit werden wir jetzt soweit durch, das wir jetzt also hier auch unser Tier Bernd nur kurz fragen können: wie heißt du eigentlich - getName. Und das können wir dann entsprechend ausgeben lassen. Und Bernd begrüßt die Welt. Jetzt haben wir also eine abstrakte Tierklasse und wollen jetzt konkrete Tiere schaffen. Und da fällt mir ein, dass ich gerne einen Fisch haben will. Jetzt brauchen wir natürlich für einen Fisch alle Dinge, die auch hier ein Tier kann. Und um uns jetzt nicht zu viel Arbeit zu machen, brauchen wir eigentlich nichts anderes zu tun, als meine neue Klasse Fisch erben zu lassen von der Klasse Tier. Wollen wir dies auch ableiten. Daher wechsle ich noch mal kurz in mein Projekt hier. Und lege mir nun hier im gleichen Paket eine neue Java-Datei an. In Java gibt es eine goldene Regel, dass alle öffentlichen Klassen grundsätzlich in einer eigenen Java-Datei liegen, die den gleichen Namen trägt. Also gehen wir hierhin und sagen: wir hätten jetzt gern eine Klasse Fisch. Liegt im gleichen Paket, sagen: Finnisch. Und nun haben wir ebenso einen Standardfisch. Diese Fischklasse hat aber noch nichts mit Tier zu tun. So ziemlich überhaupt nichts, die ist noch leer. Was wir jetzt aber tun können, ist - wir hängen hier einen "public class Fisch" jetzt noch ein Schlüsselwort "extends" an. Extends heißt so viel wie erweitert. Und sagen, dass diese die Tierklasse erweitert. Und damit erbte nun meine Klasse Fisch die Eigenschaften und Methoden der Klasse Tier und kann diese Dinge schon. Nun. Wie funktioniert das Ganze nun? Wir sollten kurz hier mal unseren Konstruktorfisch etwas anpassen und sagen: s out "Ich bin ein Fisch!" Nur damit klar ist, das ist ein Fisch. Anschließend gehen wir hier in unser Hauptprogramm und bilden einen Fisch: Fisch "b" ist gleich "Neuer Fisch". Lassen wir es erstmal kompilieren. Wie erwartet, schreit er: "Ich bin ein Fisch!" Und damit wissen wir schon mal: okay, er kommt ins Leben, dieser gute Kerl. Wir können jetzt gleichzeitig jetzt noch etwas ausprobieren. Sie sehen, dass es hier innerhalb der Fischklasse kein Alter und kein Name angegeben ist. Trotzdem kann ich jetzt hier innerhalb meines Programmes hingehen: "b" und mal den Punkt setzen. Und Sie sehen hier jetzt eine ganze Liste von Methoden. Und wenn Sie genau hinschauen, finden Sie hier eine Methode, die "getName" heißt. Und hier eine Methode, die "getAlter" heißt. Diese Methoden haben wir aber nie in Fisch angelegt. Diese hat Fisch von Tier geerbt. Das bedeutet, wir können hier tatsächlich jetzt Methoden benutzen, die geerbt worden sind und müssen diese nicht neu implementieren. Und das spart uns natürlich ungemein viel Arbeit.

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!