Sinn von abstract

Neue Frage »

Auf diesen Beitrag antworten »
Erstsemestler Sinn von abstract

Meine Frage:
Hey Leute,

in Java gibt es doch das Schlüsselwort abstract. Dies bedeutet ja, dass von einer Klasse kein Objekt erzeugt werden kann. Wann ist es denn eigentlich sinnvoll von einer Klasse kein Objekt erzeugen zu wollen?

Meine Ideen:
Vielen Dank :-)
 
Auf diesen Beitrag antworten »
eulerscheZahl

Wenn du mehrere Dinge mit dem selben Grundgerüst hast, die sich aber doch in der Ausführung unterscheiden.
Beispiel: es soll auf eine Datenbank zugegriffen werden. Je nach Datenbank (SQL, Access, ...) kann die genaue Implementierung anders aussehen, aber es ist und bleibt eine Datenbank, in die man Daten schreiben kann und auch wieder auslesen. Angenommen, man tauscht jetzt die Datenbank durch eine andere aus, muss man dank der abstrakten Klasse nur eine andere Kindklasse verwenden, den restlichen Code kann man übernehmen.
Bis dahin trifft das auch auf ein Interface zu. Der Unterschied: in der abstrakten Klasse kannst du manche Funktionen bereits implementieren (die, die sowieso immer gleich sind) und nur ein paar als abstract deklarieren.
Auf diesen Beitrag antworten »
Erstsemestler

Abstract würde dann wahrscheinlich im Zusammenhang mit Interfaces stehen. Wenn ich die Definition von Interfaces richtig im Kopf habe, dann greifen diese, sobald von einer Klasse mehrfach geerbt werden soll? Hier wäre dann wahrscheinlich auch abstrac sinnvoll, um eine Unterscheidung hinzubekommen?
Auf diesen Beitrag antworten »
eulerscheZahl

Ich verstehe nicht, worauf du hinauswillst.

Mehrfachvererbung heißt, dass eine Klasse von mehreren erbt (nicht mehrere von einer). In Java ist das nicht möglich, in C++ schon. Hier brauchst du in Java Interfaces (abstrac class hilft nicht).
 
Auf diesen Beitrag antworten »
Erstsemestler

Super, danke dir. Da habe ich mich bloß falsch ausgedrückt. Könntest du mir noch schnell mit den Interfaces in Java weiterhelfen?

Stehen Interfaces im Zusammenhang mit dem Schlüsselwort super?

(Sorry für die Fragen, aber das Skript ist echt ein Witz :-)
Auf diesen Beitrag antworten »
eulerscheZahl

Mit super kommst du an die Elternklasse und kannst z.B. Methoden aufrufen, die du überschreibst/verdeckst. Wird beim Konstruktor gerne gemacht.

Mit Interfaces hast das nichts zu tun.
Auf diesen Beitrag antworten »
Erstsemestler

Okey :-) Und was haben dann die Interfaces für einen Sinn?
Auf diesen Beitrag antworten »
eulerscheZahl

Zum einen: vielleicht will man ja nichts implementieren, sondern nur sagen, dass es die Funktion gibt. Dann verwendet man eine Klasse, die das Interface implementiert, statt von der abstrakten Klasse zu erben.

Und in Java kann man nur von einer Klasse erben, aber mehrere Interfaces implementieren. Man hat also nicht immer eine Wahl.
Auf diesen Beitrag antworten »
Erstsemestler

Okey, das klingt mal richtig kompliziert :-)

Danke für die Antwort Daumen hoch
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »