Was ist Vererbung? (Was ist Vererbung?), FAQ-Antwort, Seite 724397
https://www.purl.org/stefan_ram/pub/faq_vererbung_java (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Java-Kurs

Was ist Vererbung?

Da diese FAQ-Antwort im Rahmen eines Java -Kurses geschrieben wurde, verwendet sie Java  zur Erklärung.

Übernahme

Bei der Vererbung übernimmt  eine Klasse die nicht-statischen Felder und nicht-statischen Methoden einer anderen Klasse.

Im folgenden Beispiel übernimmt („erbt“) die Klasse »Extension« die Methoden der Klasse »java.lang.Object«, darunter die Methode »toString()«.

Main.java

final class Extension extends java.lang.Object { }

public final class Main
{ public static void main( final java.lang.String[] args )
{

java.lang.System.out.println
( new Extension().toString() );

}}

Protokoll
Extension@4c63ef20

Hinzufügen

Eine erbende Klasse kann Methoden zu den übernommenen Methoden hinzufügen.

Main.java

final class Extension extends java.lang.Object
{

void print()
{ java.lang.System.out.println
( toString() ); }}

public final class Main
{ public static void main( final java.lang.String[] args )
{

new Extension().print();

}}

Protokoll
Extension@4c63ef20

Ersetzen

Eine erbende Klasse kann übernommene Methoden ersetzen.

Main.java

final class Extension extends java.lang.Object
{

@java.lang.Override public java.lang.String toString()
{ return "Extension"; }}

public final class Main
{ public static void main( final java.lang.String[] args )
{

java.lang.System.out.println
( new Extension().toString() );

}}

Protokoll
Extension

Indikationen

Vererbung wird eingesetzt, wenn die erbende Klasse einen Begriff darstellt, der ein Unterbegriff des von der vererbenden Klasse Dargestellten ist.

Beispielsweise könnte eine Klasse, die Laserdrucker darstellt, von einer Klasse erben, die Drucker darstellt.

Kritik

Vererbung führt oft zu Problemen, da sie die Abgrenzung von Klassen untereinander verletzt. Insbesondere Hierarchien vieler durch Vererbung verbundener Klassen führen zu Problemen.

www.javaworld.com/article/2073649/why-extends-is-evil.html

en.wikipedia.org/wiki/Fragile_base_class_problem

Als Alternative wird Komposition  (Einbau von Objekten einer „Oberklasse“ als Felder, die dann bei der Implementation verwendet werden können) empfohlen.

favor object composition over class inheritance ” – Design Patterns: Elements of Reusable Object-Oriented Software

 

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram724397 stefan_ram:724397 Was ist Vererbung? Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd724397, slrprddef724397, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/faq_vererbung_java