Java Vorteile abstrakte Klassen?

... komplette Frage anzeigen

3 Antworten

Ich bin mir nicht sicher ob ich verstehe, was du mit "Warum vererbt man nicht einfach nur die Klassen zueinander?" meinst.

Ich versuche deine Frage nach dem Sinn von abstrakten Klassen einmal mit einem Beispiel zu beantworten: Ich habe einmal ein kleines Programm geschrieben, was bestimmte Daten wahlweise in einer Datenbank oder einigen Dateien ablegen sollte. Zusätzlich bot diese Storage-Klasse noch einige Hilfsfunktionen, z.b. eine Suche nach bestimmten Kriterien und sollte, damit nicht bei jeder Anfrage wieder alle Daten eingelesen werden mussten, einen Cache verwenden.

Ich habe also Storage als abstrakte Klasse definiert, alle Funktionen implementiert. Das einzige was ich nicht in Storage selbst implementieren konnte waren die Funktionen zum lesen / schreiben eines Datensatzes, da diese ja je nach Einstellungen unterschiedlich sein sollten. Also habe ich für diese abstrakte Funktionen als Platzhalter genutzt und anschließend FileStorage und DbStorage von Storage abgeleitet. Die komplette Logik dieser Klassen war bereits in Storage implementiert und so musste ich für jede dieser Ausprägungen nur die Lese- und Schreibfunktion schreiben.

Abstrakte Klassen ermöglichen es, teilweise Implementierungen vorzunehmen, die für mehrere Unterklassen gleich sind. Im Gegensatz zu einem Interface, in dem sämtliche Methoden imer public sind, ermöglichen es abstrakte Klassen, versteckte Funktionen offen zu lassen, so dass wie in meinem Beispiel eine Unterklasse keine öffentlich erreichbare Methode, sondern nur eine interne Hilfsfunktion implementiert werden muss.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Sekai2706
18.11.2016, 06:12

Danke

0

Antwort: Generalisierung

Abstrakte Klasse : Fahrzeug

geerbte Klasse : Auto , LKW , Motorrad ......

Von der abstrakten Klasse selbst kannst du kein Objekt aus generieren

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Sekai2706
18.11.2016, 06:12

Ok danke

0

Was möchtest Du wissen?