Noch kein Benutzerkonto?

Java Termine

Unsere Sponsoren

Advertisement
Advertisement
Advertisement
Startseite
JUG Deutschland Forum
Welcome, Guest
Please Login or Register.    Lost Password?
kann ein Objekt mehrere Klassen haben? (1 viewing) (1) Guest
Go to bottom Post Reply Favoured: 0
TOPIC: kann ein Objekt mehrere Klassen haben?
#729
awsed (Visitor)
Click here to see the profile of this user
Birthdate:
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
 
Report to moderator   Logged Logged  
  The administrator has disabled public write access.
#731
dvr (Admin)
Admin
Posts: 69
User Offline Click here to see the profile of this user
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
 
Report to moderator   Logged Logged  
  The administrator has disabled public write access.
#734
fbuckert (User)
Admin
Posts: 2
User Offline Click here to see the profile of this user
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
 
Report to moderator   Logged Logged  
  The administrator has disabled public write access.
#757
iolaus (User)
Admin
Posts: 1
User Offline Click here to see the profile of this user
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
 
Report to moderator   Logged Logged  
  The administrator has disabled public write access.
#776
Jan_Gerhard (User)
Admin
Posts: 8
User Offline Click here to see the profile of this user
Re:kann ein Objekt mehrere Klassen haben? 9 Months, 1 Week ago  
 
Report to moderator   Logged Logged  
  The administrator has disabled public write access.
#777
Jan_Gerhard (User)
Admin
Posts: 8
User Offline Click here to see the profile of this user
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
 
Report to moderator   Logged Logged  
  The administrator has disabled public write access.
Go to top Post Reply
Powered by FireBoardget the latest posts directly to your desktop

Mehr Java


Advertisement
Advertisement
Advertisement
Advertisement

Anzeige

Advertisement

Suche

© 2010 Java User Group Deutschland e.V.
Joomla! is Free Software released under the GNU/GPL License.