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 31: Speichere deine Würfe im Array

Java Übung Array Würfelspiel

In dieser Java Übung soll ein Würfelspiel simuliert werden. Lege eine Klasse namens, Würfelspiel an. Diese Klasse enthält eine statische Methode, namens würfeln(). Diese Methode erwartet einen Parameter vom Datentyp Integer, namens „anzahlWuerfe“. Diese Variable/Parameter repräsentiert die Anzahl der Würfe. Nachdem der Methode die Anzahl der Würfe übergeben wurde, soll die Methode Zufallszahlen zwischen 1 […]

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.

So kannst du Java Methoden überladen

Java Methoden überladen

Im Mittelalter war es üblich, dass Könige oder Adlige Briefe durch ein Siegel verschlossen. Das Siegel hatte die Aufgabe den Inhalt des Briefes vor dem gewaltsamen Öffnen zu schützen. Außerdem hatte das Siegel die Aufgabe einen Eigentumsnachweis sicher zu stellen. Und jeder, welcher das Siegel des Königs sah, wusste: „Das königliche Siegel – Oh ein […]

Achte bei Java Methoden stets auf die Wertübergabe

Java Methoden Wertübergabe

Ich lege gleich los…. Schau dir diesen Code einmal an. Welche Zahl wird wohl auf der Bildschirmanzeige zurückgegeben? public class MethodenWertUebergabe { static int verdoppele (int i){ i=i*2; return i; } public static void main(String[] args) { int i = 2; verdoppele(i); System.out.println(i); } }

Nutze das Java Switch Case Statement für komplexe Verzweigungen

Java Switch case

Java switch case statement – was ist das? Wozu brauchst du das? Lass mich anders beginnen… 🙂 In einen meiner früheren Beiträge habe ich schon einmal über bedingte Anweisungen oder Zuweisungen geschrieben. Diese if und else Konstrukte funktionieren eigentlich ganz gut. Aber was ist, wenn du mehrere Parameter abfangen möchtest. Okay ein Beispiel…

So kannst du deine Java Methoden ausführen

Java Methoden ausführen

Du hast die ersten Java Methoden erstellt. Doch wie greifst du jetzt auf diese zu? Wie kannst du diese Methoden in einer anderen Klassen aufrufen? Welcher Unterschied, hinsichtlich des Methodenaufrufes, besteht eigentlich zwischen deinen Java Methoden? Diese Fragen möchte ich gern in diesem Beitrag beantworten. Gehen wir dazu in den Garten und schauen uns Blumen […]

Du musst in Java nicht jede Exception fangen

Java Exception fangen

Kennst du die Metapher mit dem Jongleur und den Bällen? Ein Jongleur hält drei Bälle in der Luft, dann vier und irgendwann fünf. Aber irgendwann ist es genau ein Ball zu viel. Und Alles bricht zusammen. Ja ein Ball zu viel, kann alles versauen. 🙂 Und so ist es doch immer im Leben. Du kannst […]

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 […]

3 Möglichkeiten um Vererbung von Java Klassen zu verhindern, zu verbieten oder ausschließen

Java Vererbung verhindern

Die ganze Java Vererbung für bestimmte Klassen ausschließen bzw. verhindern oder verbieten. Was soll das? Für bestimmte Java Klassen soll die Vererbung ausgeschlossen werden. Es soll also verhindert werden, dass Elternklassen – Kindklassen bekommen können. Klingt ein bisschen wie Verhütung, oder? Denn wie auch im echten Leben, können Kinder zu kleinen Tyrannen werden. Sie bedienen […]

Die vier wichtigen Phasen um Java Objekte zu erstellen

Java Objekte anlegen

Wie werden aus deinen Java Klassen richtig nützliche Java Objekte? Das ganze läuft in vier Phasen ab. Und diese Phasen möchte ich dir in diesem Beitrag vorstellen. Ob das nützlich ist? Schau dir das Bild an. Am Ende dieses Beitrages wirst du wissen, warum Eclipse dir hier eine Fehlermeldung gibt und wie du dieses Problem […]

So kannst du mit dem StringTokenizer Java Strings zerlegen oder splitten

Java StringTokenizer Java Strings teilen zerlegen splitten

Java StringTokenizer – was ist das? Bevor ich diese Frage kläre, schiebe ich eine zweite Frage hinterher. Denn im Wort Tokenizer steckt das Wort Token. Also was ist ein Token? Hier die Definition zum Token: Ein Token ist eine bestimmte Aneinanderreihung von Zeichen. Man kann auch sagen, eine lexikalische Einheit. Das kann zum Beispiel eine […]