Häufige Fragen im Fachgespräch – Vererbung – Anwendungsentwickler-Podcast #8
In der achten Episode meines Anwendungsentwickler-Podcasts setze
ich meine Reihe der häufigsten Prüfungsfragen im Fachgespräch fort.
Das Thema ist dieses Mal die zweite „Säule“ der Objektorientierung,
die Vererbung.
25 Minuten
Podcast
Podcaster
Beschreibung
vor 10 Jahren
In der achten Episode meines Anwendungsentwickler-Podcasts setze
ich meine Reihe der häufigsten Prüfungsfragen im Fachgespräch
fort. Das Thema ist dieses Mal die zweite „Säule“ der
Objektorientierung, die Vererbung.
Beantwortung der Frage im Fachgespräch
Klassen können Attribute und Methoden von anderen Klassen
übernehmen, indem sie von ihnen erben.
Die vererbende Klasse heißt Basisklasse
(auch Eltern- oder Superklasse) und die erbende Klasse
Subklasse (auch Kind- oder abgeleitete Klasse).
Um von einer Klasse zu erben, schreibt man in Java extends
und den Namen des Basisklasse hinter die Klassendefinition. In C#
wird anstatt extends einfach der Doppelpunkt : verwendet.
Alle Attribute und Methoden der Basisklasse können
automatisch in der Subklasse verwendet werden, sofern sie für
diese sichtbar sind. Der
Sichtbarkeitsmodifizierer protected erlaubt der Klasse selbst und
allen Subklassen den Zugriff auf die mit ihm ausgezeichneten
Member.
Eine Klasse kann mit abstract als nicht
instantiierbar gekennzeichnet werden. Dann können ihre
Attribute und Methoden nur über Objekte ihrer Subklassen
aufgerufen werden.
Auch eine Methode kann als abstract gekennzeichnet werden.
Sie wird dann in der Basisklasse nicht implementiert und
muss in den Subklassen implementiert werden. Sobald
mind. eine Methode abstrakt ist, muss auch die gesamte Klasse
abstrakt sein.
Methoden können in Subklassen überschrieben
werden. Das bedeutet, dass in der Subklasse eine Methode mit
derselben Signatur (Methodenname und Parameter) wie in der
Basisklasse implementiert wird. Beim Aufruf der Methode an einem
Objekt der Subklasse wird nun deren Implementierung verwendet
anstatt der der Basisklasse.
Java erlaubt standardmäßig das Überschreiben von Methoden,
während C# es standardmäßig verbietet. In Java kann man Methoden
mit final als nicht überschreibbar kennzeichnen und in C# mit
virtual als überschreibbar.
Auch Klassen können als nicht überschreibbar gekennzeichnet
werden, was bedeutet, dass man von ihnen nicht erben kann. In
Java wird hierfür final verwendet und in C# sealed.
Mit super kann innerhalb der Subklasse auf Member der
Basisklasse zugegriffen werden.
In den meisten neueren Programmiersprachen ist es nur
möglich, von einer einzigen Klasse zu erben, da die
Mehrfachvererbung (die z.B. in C++ erlaubt ist) zu Problemen
führen kann (z.B. dem Diamantenproblem).
In Java erben alle Klassen automatisch von Object.
Weiterführende Diskussion
Legt euch ein interessantes Beispiel (bitte nicht das alte
Auto/Fahrzeug) für die Vererbung für die Prüfung zurecht.
Was ist die Methodensignatur? (Methodenname und Reihenfolge
und Typ der Parameter)
Was ist der Unterschied zwischen dem Überladen und dem
Überschreiben von Methoden? (Überschreiben: gleiche Signatur in
Subklasse, Überladen: gleicher Name in derselben Klasse)
Was passiert, wenn ich eine private Methode „überschreibe“?
(sie wird in der Subklasse „maskiert„)
Design Pattern „Template Method“ (verwendet final und
abstract)
Tipps für die Entwicklerpraxis
Viele Entwurfsmuster verwenden Vererbung.
Vererbung nicht im Sinne der „ist-ein“-Beziehung verstehen,
sondern zur reinen Wiederverwendung.
Beim Einsatz von Vererbung immer das Liskov Substitution
Principle einhalten. Gegenbeispiel: Ein Quadrat ist kein
Rechteck.
„Favor composition over inheritance.„
Literaturempfehlungen
*
(direkt beim Rheinwerk-Verlag bestellen*)
Das passende Kapitel im OpenBook: 5.8 Vererbung – Rheinwerk
Computing :: Java ist auch eine Insel
*
*
*
*
Links
Permalink zu dieser Podcast-Episode
RSS-Feed des Podcasts
Anwendungsentwickler-Podcast #2: Häufige Fragen im
Fachgespräch – Objektorientierung
Anwendungsentwickler-Podcast #6: Häufige Fragen im
Fachgespräch – Kapselung
Rheinwerk Computing :: Java ist auch eine Insel – 5.8
Vererbung
Can we override private method in Java – Example program |
Java67
The Liskov Substitution Principle
Multiple inheritance: The diamond problem – Wikipedia, the
free encyclopedia
Software design pattern – Wikipedia, the free encyclopedia
Template method pattern – Wikipedia, the free encyclopedia
Weitere Infos zum Fachgespräch
Du suchst noch mehr Tipps rund um das Fachgespräch? Dann
schau doch mal in diese Artikel- und Podcast-Kategorie:
Alle Artikel rund um das Fachgespräch.
Kennst du schon meine Hörbücher zur Vorbereitung
auf das Fachgespräch? Unter
dasperfektefachgespraech.de kannst du sie herunterladen. In
insg. über 10 Stunden gehe ich
über 200 Fragen im Detail durch und gebe
Tipps für die Beantwortung.
Und wenn du dich für meinen Newsletter einträgst, bekommst
du immer direkt alle Neuigkeiten von dieser Seite in dein
Postfach geliefert.
Jetzt anmelden!
Weitere Episoden
5 Minuten
vor 3 Wochen
11 Minuten
vor 4 Monaten
8 Minuten
vor 4 Monaten
8 Minuten
vor 4 Monaten
10 Minuten
vor 5 Monaten
In Podcasts werben
Kommentare (0)