Erstsemestler unregistriert
 |
|
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 :-)
|
|
17.01.2015 10:12 |
|
|
|
|
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.
__________________ Syntax Highlighting fürs Board (Link)
|
|
17.01.2015 10:38 |
|
|
Erstsemestler unregistriert
 |
|
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?
|
|
17.01.2015 10:43 |
|
|
|
|
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).
__________________ Syntax Highlighting fürs Board (Link)
|
|
17.01.2015 10:48 |
|
|
Erstsemestler unregistriert
 |
|
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 :-)
|
|
17.01.2015 11:10 |
|
|
|
|
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.
__________________ Syntax Highlighting fürs Board (Link)
|
|
17.01.2015 11:23 |
|
|
Erstsemestler unregistriert
 |
|
Okey :-) Und was haben dann die Interfaces für einen Sinn?
|
|
17.01.2015 11:35 |
|
|
|
|
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.
__________________ Syntax Highlighting fürs Board (Link)
|
|
17.01.2015 11:57 |
|
|
Erstsemestler unregistriert
 |
|
Okey, das klingt mal richtig kompliziert :-)
Danke für die Antwort
|
|
17.01.2015 12:40 |
|
|
|