English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
Alle Kategorien

Ich lerne gerade Java für EDV und verstehe gerade nicht zu welchem Programmierzweck abstrake Methoden und Klassen dienen.

Bei Klassen kann ich ja noch verstehen dass sie zur übersichtlichkeit dienen wenn man zum Beispiel Esel, Giraffe und Hund allgemein auch als Tiere bezeichnen will um sie zum beispiel in ein Array zu packen.

Was ist aber mit abstrakten Methoden? Ich sehe darin nur mehr schreibarbeit. Wenn ich die abstrakte Methode in der abstrakten Klasse vorher deklariere, dann muss ich sie in meiner Unterklasse erneut deklarieren und definieren. Wozu das ganze also?

2007-03-05 23:37:19 · 3 antworten · gefragt von Moritz 1 in Computer & Internet Programmierung & Design

3 antworten

Wenn du die Methoden nicht abstrakt implementierst, dann kannst du die Objekte der abstrakten Klasse nicht richtig benutzen. Die Objekte werden ja wieder in anderen Zusammenhängen benutzt und dort sollen die Methoden ja aufgerufen werden können.

In deinem Beispiel würde man in der abstrakten Klasse "Tier" zum Beispiel die Methode "Füttern" implementieren. Nun kannst du einer anderen Klasse, zum Beispiel einem "Wärter", einen Algorithmus zur Futterausgabe verpassen, der mit einer abstrakten Klasse "Tier" arbeitet und dort jeweils die Methode "Füttern" aufruft. Wenn es die aber nicht gibt, musst du beim "Wärter" die Tiere nacheinander einzeln aufrufen und "füttern". Das ist ungleich komplizierter und fehleranfälliger. Deshalb also lieber bei der abstrakten Klasse.
Ich kann dir aus der Praxis versichern, dass man das andauernd braucht.

2007-03-06 00:10:49 · answer #1 · answered by NaturalBornKieler 7 · 1 0

Nur um das Beispiel meines Vorredners etwas anschaulicher zu machen:

Der große Vorteil der abstrakten Methoden liegt hier darin, dass sich der Wärter keinerlei Gedanken darüber machen muß wie man ein spezielles Tier zu füttern hat!
Er arbeitet nur mit der abstrakten Klasse Tier und ihrer abstrakten Methode füttern().

Das Detailwissen über die unterschiedlichen Fütterungsverfahren für z.B. Tiger und Schildkröten liegt in den jeweiligen (von Tier abgeleiteten und füttern() überschreibenden) Methoden.

Und noch besser: an Wärter & Co ändert sich gar nichts wenn neue Tierchen hinzukommen: einfach von Tier ableiten, Fütterungsmethode implementieren und gut...

2007-03-07 06:34:08 · answer #2 · answered by lohoc 2 · 1 0

Du hast Dir die Frage fast schon selbst beantwortet.

Dann MUSST Du diese Methode in der Unterklasse implementieren. Damit wird verhindert, dass bei einer abgeleiteten Klasse eine Methode vergessen wird bzw. die Implementierung der abgeleiteten Klasse unvollständig ist.

Gruss
M.

2007-03-05 23:47:35 · answer #3 · answered by Martin G. 4 · 0 0

fedest.com, questions and answers