|
|
|
Startseite
|
kann ein Objekt mehrere Klassen haben? (1 viewing) (1) Guest
Favoured: 0
|
|
|
TOPIC: kann ein Objekt mehrere Klassen haben?
|
|
|
|
kann ein Objekt mehrere Klassen haben? 11 Months, 4 Weeks ago
|
|
|
Guten Tag
meine Frage lautet: " kann ein Objekt mehrere Klassen haben?"
Theoretisch kann das Buch Schneewittchen ja die KLassen Märchen, Bücher oder Medium haben. Soweit theoretisch, nur hab ich keine Ahnung ob es bei Java genauso ist. Stimmt das? Danke!
MfG
Awsed
|
|
|
|
|
|
|
The administrator has disabled public write access.
|
dvr (Admin)
Admin
|
|
Re:kann ein Objekt mehrere Klassen haben? 11 Months, 4 Weeks ago
|
|
|
Hallo Awsed,
wenn ich dich richtig verstehe, ist Schneewittchen eine Instanz von Märchen?
Märchen könnte von Buch erben und Buch könnte von Medium erben, dann hat Schneewittchen auch alle Eigenschaften von Buch und Medium.
Was allerdings nicht geht: Buch und Medium sind Klassen die nichts miteinander zu tun haben und Märchen soll von beiden erben. Das wäre Mehrfachvererbung und das kann Java nicht.
Hoffe das hat geholfen,
Daniel
|
|
|
|
|
|
|
The administrator has disabled public write access.
|
|
|
|
Re:kann ein Objekt mehrere Klassen haben? 11 Months, 4 Weeks ago
|
|
|
Hallo Awsed,
in der Tat Mehrfachvererbung geht in Java nicht - aber Du kannst über Interface teas ähnliches ereichen:
public class maerchenBuch extends Märchen
implements Bücher, Medium,
Gruß
Friedrich Geisler-Buckert
|
|
|
|
|
|
|
The administrator has disabled public write access.
|
|
|
|
Re:kann ein Objekt mehrere Klassen haben? 10 Months ago
|
|
|
Hallo,
sind das nicht zwei grundverschiedene Dinge? Ich kann doch nicht Interfaces mit Mehrfachvererbung in Verbindung bringen oder doch?
Vererbung im Allgemeinen bedeutet doch, dass ich das Verhalten eines anderen Objektes erbe.
Interfaces hingegen sind Schnittstellen die kein Verhalten aufweisen sondern lediglich eine Schnittstelle nach außen bereitstellt die sich über Attribute, Operationen und Nachrichtenempfänger definiert.
Ich würde einfach sagen, dass Mehrfachvererbung nicht möglich ist und es keine Alternative gibt. Es gibt aber folgende Möglichkeit das Problem zu lösen:
Klasse --> Medium
Superklasse --> Object
Klasse --> Buch
Superklasse --> Medium
Klasse --> Märchenbuch
Superklasse --> Buch
Somit verhält sich Märchenbuch wie ein Buch, das sich wiederum wie ein Medium verhält. Stellt sich nur noch die Frage wie ich es realisieren möchte wenn es neben Märchenbücher auch noch Fachbücher gibt.
Nun da gibt es sicherlich mehrere Ansätze. Ich würde es so machen, dass ich eine Klasse „Märchen“ erstellen und die Instanzen über den Konstruktor erzeugen würde. Das wäre dann eine Komposition, denn ein Märchenbuch kann nicht ohne ein Märchen existieren.
Meines Erachtens wäre Mehrfachvererbung eh falsch am Platz, denn einem Buch das Verhalten „Märchen“ aufzudrücken, entspricht meines Erachtens nicht der OOP-Denkweise. Aber da gehen die Meinungen eh auseinander.
Grüße
|
|
|
|
|
|
|
The administrator has disabled public write access.
|
|
|
|
Re:kann ein Objekt mehrere Klassen haben? 9 Months, 1 Week ago
|
|
|
|
|
|
|
|
|
|
The administrator has disabled public write access.
|
|
|
|
Re:kann ein Objekt mehrere Klassen haben? 9 Months, 1 Week ago
|
|
|
Hallo liebes Forum,
also so wie ich das sehe, gibt es in Java definitiv keine explizite Mehrfachvererbung, da man von vornherein aus Gründen der Übersichtlichkeit und Wartbarkeit auf dieses Konzept verzichtet hat.
Das Problem bei Mehrfachvererbung besteht darin, dass man bei zunehmender Anzahl der zu erbenden Klassen sehr schnell den Überblick über sich evtl. überschreibende Variabeln oder Methoden verliert.
Habe ich beispielsweise eine Klasse C die von der Klassen A und der Klasse B erbt, müsste ich stets sicherstellen, dass meine beiden Elternklassen nicht Variabeln oder Methoden mit identischen Namen benutzen. Hier wäre nie eindeutig welche der beiden sich "durchsetzt", da man darüber zur Laufzeit keine Kontrolle besitzt. Bei zwei Klassen wäre es sicherlich noch irgendwie zu überblicken, aber bei steigender Zahl gräbt man sich sein eigenes Grab.
Interfaces sind spezielle Klassen, in denen lediglich abstrakte Operationen und öffentliche konstante Klassenattribute definiert werden können. Die eigentliche Implementierung erfolgt allerdings in der Klasse, welche das Interface verwendet. Klassen die eine Schnittstelle implementieren sind gezwungen ALLE Attribute und Operationen zu implementieren. Dadurch erreicht man eine Art Vereinheitlichung von Verhaltensweisen und Strukturen. Klassen, die ein Interface aufrufen, können so immer eine bestimmte Operation oder eine Attribut ansprechen obwohl die jeweiligen Klassen die Umsetzung bzw. Verwendung unterschiedlich verwirklichen können.
Da man Klassen die Interfaces nutzen, dazu zwingt alle Methoden und Attribute zu übernehmen und in irgendeiner Form zu nutzen (auch Leerimplementierungen sind möglich!), erhält man eine "Quasi-Mehrfachvererbung" da in einer Klasse beliebig viele Interfaces implementiert werden können und der jeweiligen Klasse nichts anderes übrig bleibt, als alles aus der Schnittstelle zu übernehmen.
Noch einen schönen Abend an alle!
Der Jan
|
|
|
|
|
|
|
The administrator has disabled public write access.
|
|
|
|
|
|
|
Anzeige
|