Skip to main content

Java Vererbung findet auch zwischen Einkaufstüten und Polizeiautos statt

„Manchmal findet Java Vererbung auch zwischen Einkaufstüten und Polizeiautos statt“

Irrer Titel, oder?

Aber mal Hand aufs Herz.
Was haben eigentlich eine Einkaufstüte und ein Polizeiwagen gemeinsam?

Ich verrate dir etwas:

Du kannst die Verbindung nicht erkennen, denn ich habe dir nicht alles verraten.

Es fehlt noch ein wichtiger Aspekt – eine Verbindung zwischen beiden.

Und zwar.
Ein ausgewachsener Mann im Rentierkostüm.

Java Vererbung am Beispiel

Und macht es jetzt Klick?

Bei der Java Vererbung geht es um die Vermeidung von doppelten Code.

Spaß beiseite.

Stell dir einmal vor:

  • Du entwirfst ein Java Programm.
  • Und in diesem Programm gibt es Figuren – einfache 2D-Figuren.
  • Diese Figuren sind dann eine Einkaufstüte, ein Polizeiauto und das Rentier.

Alle Figuren sollen lediglich rotieren.
Mehr sollen diese Figuren nicht tun.

Java Vererbung Rotieren

Natürlich könntest du jetzt drei Klassen anbieten und in jeder Klasse eine separate rotieren-Methode.
Java-Vererbung-doppelten-Code-vermeiden

Oder du erstellst eine Klasse, welche diese eine Methode anbietet.
Und alle anderen Klassen erben diese Methode von der Superklasse.
Java Vererbung Methode Beispiel rotieren

Vererbung findet immer dort statt, wo Objekte das Gleiche tun müssen.

Stichwort ist redundanter Code.
Und dieser redundante oder doppelte Code ist etwas sehr schlechtes.

Denn nehmen wir einmal an.
Irgendwann sagst du: „Dieses Rotationsprogramm ist mir zu langweilig.
Ich möchte, dass die Figuren beim Rotieren auch noch Aufblinken.“

Ohne Vererbung müsstest du in alle drei Klassen eine aufblinken()-Methode hinzufügen.
Mit Vererbung gehst du in die Superklasse, schreibst einmal die aufblinken()-Methode hinein und schon blinken alle deine Figuren beim Rotieren auf.

Java Vererbung blinken Methode

Gelb ist nicht ganz dein Geschmack, oder?
Du möchtest vielleicht noch, die Aufblinkfarbe von Gelb in Grün abändern.
Na klar, also nochmal rein in die Superklasse.
Einmalig die Aufblinkmethode abändern.
Und schon blinken alle Figuren grün statt gelb.

Kurzum:
Vererbung macht dir das Leben als Entwickler extrem einfach.
Der Code ist leichter zu erstellen und vor allen Dingen besser zu warten.

Vererbung folgt immer dem IST-ES-Prinzip.

Du solltest dich bei jeder Klasse, welche du in eine Vererbungslinie setzen möchtest immer fragen:

„Ist dieses Objekt ein spezielleres Objekt der Superklasse?“

Am Beispiel der rotierenden Figuren fragst du dann:

  • Ist das Polizeiauto eine rotierende Figur? – Ja in diesem „Rotieren-Programm“ schon.
  • Und sind die Einkaufstüte und das Rentier ebenfalls rotierende Figuren?- Für dieses Rotieren-Programm kannst du dies ebenfalls bejahen.

Somit können alle drei Klassen von der Superklasse „Rotierende Figuren“ sorglos erben.

Natürlich muss zur Vererbung immer der Kontext passen.

Das Konzept macht nur Sinn, wenn es auch wirklich in das Programm passt.
Schau dir dieses Bild einmal an.

Java Vererbung Rennsimulation

Dies könnte ein Rennsimulator sein.
Der Mann im Rentierkostüm ist jetzt als Zuschauer des Rennens geplant.

Meine Frage an Dich:
Können in dieser Rennsimulation das Rennauto und das Rentier eine Vererbungslinie bilden?

Na was denkst du?
Das Auto kann sich überschlagen (rotieren) und der Mann ebenfalls.

Es gibt also Gemeinsamkeiten.
Macht Vererbung hier Sinn?

Nein natürlich nicht.
Denn wie soll die Superklasse heißen?
Der Name „Rotierende Figuren“ passt hier nicht mehr.
Denn das eine Objekt ist ein Rennauto, welches fahren, lenken, beschleunigen auch noch zufällig rotieren kann.
Und das andere Objekt wäre ein Zuschauer, welcher winken, sich freuen, lächeln auch noch rotieren könnte.

Falls du beide in eine Vererbungslinie setzen würdest, könnte der Zuschauer ebenfalls beschleunigen, lenken usw.
Und das Auto könnte winken und lächeln. 🙂

Also absoluter Blödsinn in so einem Programm.
Mit der „IST-ES-EIN-Frage“ kommst du auf jeden Fall darauf:

  • Ist der Zuschauer ein Auto? – Blödsinn
  • Ist das Auto ein Zuschauer – ebenfalls Schwachsinn.

Es gibt in so einem Programm keine gemeinsame Vererbungslinie, obwohl beide Objekte vielleicht die gleiche Methode haben. (Möglichkeit zum Rotieren)

Zusammenfassung:

  • Durch die Java Vererbung vermeidest du doppelten und redundanten Code.
  • Deshalb solltest du schauen, ob es Sinn macht – verschiedene Objekte bzw. Klassen in einer Vererbungslinie zu vereinen.
  • Dabei ist die Sinnhaftigkeit der Vererbung von Programm zu Programm vollkommen unterschiedlich.
  • Und deshalb solltest du immer dein Klassen Vererbungskonzept nach dem „IST-ES-EIN-Prinzip“ prüfen.

Ähnliche Beiträge

Java Übung 21 – Bestimme die Anzahl der Tage

Java Übung Tage

In dieser Java Übung möchte ich, dass du eine Methode schreibst, welche zwei Zahlen entgegennimmt. Und zwar soll die erste Zahl das Jahr sein. Die zweite Zahl soll eine Monatsangabe (1-12) repräsentieren. Was soll die Methode dann machen? Die Methode soll dir die Anzahl der Tage des jeweiligen Monats zurückgeben. Achte auf Schaltjahre.

Java Objekte leben auf dem Heap

Java-Objekte-Heap

Java hat eine interne Speicherverwaltung. Eigentlich ist es nicht nur eine. Es sind mehrere.   Uns interessieren nur zwei. Methoden und lokale Variablen werden auf dem Stack verwaltet. Und die Speicherverwaltung für Java Objekte und den Instanzvariablen findet auf dem Heap statt.   Ja wieso braucht Java eigentlich zwei Speichersysteme?   Es ist ganz einfach. […]

So kannst du Java Arrays anlegen

Java Arrays anlegen

Java Arrays– Was ist das? Stell es dir einmal als ein Bücherregal vor. In einem Bücherregal befinden sich sämtliche Bücher. Und diese befinden sich schön nebeneinander. Jedes Buch hat seinen festen Platz. Du kannst die Bücher ganz genau lokalisieren. Zum Beispiel kannst du sagen. Das erste Buch von links Das dritte von rechts usw. Und […]

Java lernen durch ständiges Testen – Nutze die Testumgebung von Eclipse

Java Programmierung lernen

Probieren geht über studieren Wenn du wirklich Java Programmierung lernen möchtest, dann solltest du Java nicht aus einem Buch lernen. Du solltest auch nicht strikt von dieser oder anderen Webseiten lernen. Etwas wirklich zu lernen, setzt die Bereitschaft voraus, etwas zu probieren. Denn nur durch eigenes Probieren gelangst du zum Wesentlichen. Durch Probieren wirst du […]

Java Übung 27 – Auf zur Mathe-Olympiade

Java Übung Mathe Olympiade

In dieser Java Übung möchte ich mit dir ein Programm erstellen, welches ein Mathematik-Test oder eine Mathe-Olympiade simuliert. Du kennst das vielleicht noch aus der Schule. Matheolympiade- Da wurden aus allen vier Grundrechenarten, Aufgaben formuliert. Die Schüler mussten diese Aufgaben lösen. Die Lehrer kontrollierten die Lösungen. Und der Schüler, welcher die wenigsten Fehler hatte – […]

So kannst du Java Konstanten bei der Programmierung nutzen

Java Konstanten – was kann man sich darunter vorstellen? Du kennst Konstanten in der Mathematik. Die Kreiszahl Pi ist so eine konstante Zahl. Diese Zahl ändert sich niemals. Sie beträgt immer rund 3,141592. In der Physik gelten die Lichtgeschwindigkeit, der Erdradius oder der absolute Nullpunkt als konstant. Selbst die Geschwindigkeit mit der sich die Erde […]

So kannst du Werte aus zwei oder mehreren Java Arrays verrechnen.

Java Arrays verrechnen

Wie kann man Werte aus zwei oder mehreren Java Arrays miteinander verrechnen? Zum Beispiel: Du möchtest alle Werte des ersten Arrays mit allen Werten des zweiten Arrays addieren Oder du möchtest die Summe aus beiden Arrays wissen und erst dann diese miteinander addieren. Was erwartet dich in diesem Beitrag? Zuerst werde ich dir zeigen, wie […]

So legst du Utility Klassen in Java an

Java Utility Klassen

Utility Java Klassen – was ist das? Man nennt diese auch Hilfsklassen von Java. Diese Utility Klassen sind Java Klassen, welche lediglich Methoden und Konstanten anbieten. Am Beispiel: Die Klasse Math ist so eine klassische Utility Klasse. Wozu braucht man solche Klassen? Diese Klassen sind so etwas wie ein Werkzeugkoffer für jedes Java Programm. Hier […]

So verwendest du den Java Oder Operator

Java Oder Operator

Kennst du das auch aus deiner Schulzeit? Du schreibst eine Klassenarbeit in irgendeinem Fach. Nehmen wir einfach mal an – Mathe. Jetzt bist gerade fertig mit deiner Arbeit. Und zu Hause wirst du gefragt: „Und wie lief es?“ Du antwortet:“ Ganz gut. Es wird bestimmt eine Eins oder eine Zwei.“ Drei oder vier Tage später […]

Zwei smarte Möglichkeiten eine Java Zufallszahl zu erzeugen

Java Zufallszahl

Java Zufallszahl – Wieso? In der Java Programmierung benötigst du immer wieder einmal Zufallszahlen. Du möchtest deine Software mit Daten testen und dir keine Zahlen ausdenken. Du benötigst Stichproben, welche ein reales Verhalten simulieren. Du hast ein Spiel entworfen und die Akteure sollen mit zufälligen aber unterschiedlichen Größen, Rüstungsleveln usw. auftreten. Die Einsatzmöglichkeiten für Zufallszahlen […]

Java Übung 19 – Zähle die Kommastellen

Java Übung Kommastellen Zählen

In dieser Java Übung möchte ich, dass du eine Methode zum Zählen von Kommastellen schreibst. Lege dazu eine Klasse „KommaZahl“ an. Diese Klasse enthält die statische Methode „zaehleKommaStellen“, welche eine Kommazahl als übergebenen Parameter erwartet.