Erste Schritte Extends Implements

Kros

Mitglied
Hallo Zusammen

Habe mich durch diverse Internetseiten und Tutorials durchgelesen, jedoch hat es noch nicht klick gemacht. Es geht um Vererbungen, beziehungsweise Mehrfachvererbungen, welche in Java nicht unterstützt werden.

Nehmen wir mal an, Ich habe folgende Klassen:

Code:
----------------          ----------------          ----------------          ----------------
Auto                      Fahrrad                   Fahrzeug                  Sammlerstück
--                        --                        --                        --
Leistung                  Raddurchmesser            Geschwindigkeit           Wert
--                        --                        --                        --
getLeistung()             getRaddurchmesser()       getGeschwindigkeit()      getWert()
setLeistung()             setRaddurchmesser()       setGeschwindigkeit()      setWert()
----------------          ----------------          ----------------          ----------------

Wenn ich die mögliche Vererbung nun betrachte sieht das wie folgt aus

Nun kann ein Auto von Fahrzeug wie auch von Sammlerstück erben.
Das selbe gilt für das Fahrrad.

Ist nur ein Beispiel, jedoch wie kann man die Situation in Java lösen? Mit Interface? Da kann man aber keine Variabeln sondern nur Konstanten deklarieren.
 

Kros

Mitglied
Danke für den Tip. Habs mal durchgelesen und muss es morgen nochmal durchlesen. Es erklärt aber schonmal mehr als das was ich bis jetzt gelesen habe. Dabei liest es sich auch noch etwas Frech :).

Das ganze bedeutet wohl, das mein Gewolltes nicht möglich ist. Äpfel und Birnen sind nicht das selbe, obwohl beide Kerne haben, halt unterschiedliche Kerne.
 
T

tröööt

Gast
ich würde hier Auto und Fahrrad von Fahrzeug erben lassen und Sammlerstueck als Marker-Interface verwenden ... wobei man dann eher in die richtung von abstrakten klassen und factories gehen sollte ... denn nicht jedes x-beliebige fahrrad soll ja auch ein sammlerstück sein ...
 

Landei

Top Contributor
Oft begeht man da, wo man Mehrfachvererbung zu glauben braucht, nur einen "Kategorienfehler". Ein Auto ist erst einmal ein Auto, von seiner Konstruktion, seinen Funktionen und seinem Zweck her. Zu einem "Sammlerstück" macht es erst ein bestimmter Kontext, genauso wie eine Kloschüssel erst dann Kunst ist, wenn sie jemand mit genug Egozentrik dazu erklärt. Nichts "funktionales" an einem Auto ist notwendig, um es zu einem Sammlerstück zu machen, Sammlerstücke können wild zusammengewürfelte Dinge sein, physisch oder funktionell nichts miteinander zu tun haben. Aus diesem Grund würde ich eine Klasse "Sammerstück" vorschlagen, die eine Referenz auf ein Auto, eine Uhr oder eine Kloschüssel enthält.

Diese Lösung ist nicht optimal. Als Alternative wurde Role-Oriented Programming vorgeschlagen, das zwischen dem Objekt "an sich", und den Rollen, die es im jeweiligen Kontext spielt, unterscheidet. Interfaces und Komposition wie in Java können das nicht hundertprozentig abbilden. Insbesondere fehlt in Java das Konzept der Delegation, die entweder manuell oder mit Hilfe von Bibliotheken simuliert werden muss.

Ich würde vorschlagen, dich erst einmal auf die Beispiele zu beschränken, bei denen Vererbung wirklich "passt", anstatt pathologische Fälle wie diesen irgendwie in das vorhandene Schema zu pressen. Insbesondere solltest du dir das LSP genauer anschauen, denn viele praktische Probleme mit der Vererbung beruhen auf dessen Verletzung.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
berserkerdq2 Größter unterschied von extends thread und implements runnable? Java Basics - Anfänger-Themen 2
JavaTalksToMe Extends/Implements Frage Java Basics - Anfänger-Themen 3
J Implements und Extends Java Basics - Anfänger-Themen 5
T extends und implements Java Basics - Anfänger-Themen 11
Y Threads extends Thread oder implements Runnable Java Basics - Anfänger-Themen 10
L Implements<-->extends und Interface Java Basics - Anfänger-Themen 10
N extends / implements / static, bedeutung ?? Java Basics - Anfänger-Themen 12
mrStudent <? extends T> und <? super T> Java Basics - Anfänger-Themen 1
N Variabel in eine class mit "extends JLabel" übertragen Java Basics - Anfänger-Themen 2
J extends Problem Java Basics - Anfänger-Themen 2
N extends und super vs new object Java Basics - Anfänger-Themen 4
D public ArrayList(Collection<? extends E> c); Java Basics - Anfänger-Themen 2
CptK Interface Klasse Frame (extends JFrame) aus anderer Klasse schließen Java Basics - Anfänger-Themen 7
C Was macht `public class ClassName<T extends Comparable<T>>`? Java Basics - Anfänger-Themen 14
J Compiler-Fehler Fehler bei Vektor (E extends Object declared in class Vector) Java Basics - Anfänger-Themen 9
M mehrere extends? Java Basics - Anfänger-Themen 19
J doppelname nach schlüsselwort extends Java Basics - Anfänger-Themen 4
V Was bewirkt das Schlüsselwort extends in Verbindung mit class bzw. public class ? Java Basics - Anfänger-Themen 2
Crazynet 2 extends Java Basics - Anfänger-Themen 22
S Wrapper Klasse und extends Java Basics - Anfänger-Themen 2
W Methoden Rückgabedatentyp java.util.Map<java.lang.String,? extends ...> Java Basics - Anfänger-Themen 4
R Vererbung Übergabe von Variablen der Superklasse an Subklasse mit "extends" Java Basics - Anfänger-Themen 5
S Threads Thread wenn extends schon vergeben Java Basics - Anfänger-Themen 8
vandread Java Wildcards - Wann super wann extends? Java Basics - Anfänger-Themen 2
F Anfängerfrage zu extends Java Basics - Anfänger-Themen 12
B addAll(Collection<? extends E> c) Java Basics - Anfänger-Themen 9
T Input/Output StructuredFileReader extends BufferedReader Java Basics - Anfänger-Themen 6
K Erste Schritte extends vererbung Java Basics - Anfänger-Themen 15
P Class<? extends Entity> Array Java Basics - Anfänger-Themen 9
A final und extends Java Basics - Anfänger-Themen 14
C Vererbung "extends" umgehen mittels Objekterzeugung?! Java Basics - Anfänger-Themen 29
T Collections Queue<? extends Number> add() offer() Java Basics - Anfänger-Themen 13
S Klasse extends HashMap Java Basics - Anfänger-Themen 20
L Problem mit Vererbung (extends) cannot find symbol Java Basics - Anfänger-Themen 3
D MyActionListener extends Thread Java Basics - Anfänger-Themen 3
H2SO3- Designfragen (mehrfach extends) Java Basics - Anfänger-Themen 11
G Unterschied e extends y vs ? extends y Java Basics - Anfänger-Themen 5
X List von Klasse B als List von Klasse A (B extends A) Java Basics - Anfänger-Themen 2
H extends Locale Java Basics - Anfänger-Themen 4
O import ja....extends nein Java Basics - Anfänger-Themen 5
G Muss es immer extends sein ? Java Basics - Anfänger-Themen 9
N class Test<E extends MyAbstractClass> => typ von E? Java Basics - Anfänger-Themen 5
K mehrere Extends Java Basics - Anfänger-Themen 2
S extends Vector<xyz> Java Basics - Anfänger-Themen 10
S new .() extends JDialog {.} Java Basics - Anfänger-Themen 15
S extends und Konstruktor Java Basics - Anfänger-Themen 8
E Interface extends Observable Java Basics - Anfänger-Themen 13
G Wiedermal vererbung, extends JDialog extends Exception ? Java Basics - Anfänger-Themen 8
U extends JLabel & Thread Java Basics - Anfänger-Themen 2
G Innere klasssen unde "extends" klassen definieren, Java Basics - Anfänger-Themen 2
frau-u JMenu mit extends JPanel? Java Basics - Anfänger-Themen 4
G "extends DBConnection" funktioniert nicht Java Basics - Anfänger-Themen 15
C Problem mit Zeichnen auf einer extends Canvas Class... Java Basics - Anfänger-Themen 2
F Casten bei Implements Java Basics - Anfänger-Themen 2
G Moving Objects with Threads (implements Runnable) Java Basics - Anfänger-Themen 1
B implements Java Basics - Anfänger-Themen 6
H 2 x implements Java Basics - Anfänger-Themen 2
V Merkwürdiges Problem mit Netbeans und implements Java Basics - Anfänger-Themen 10
T Geht so was? public void verkaufe (<X implements Produkt& Java Basics - Anfänger-Themen 8
J Datentyp einer Klasse bei Anwendung von implements Java Basics - Anfänger-Themen 4
G Implements Extendd. Unterschied Java Basics - Anfänger-Themen 3
U implements ? Java Basics - Anfänger-Themen 9
W Klassen durch implements abstrakt definieren Java Basics - Anfänger-Themen 6
H Problem mit Implements Java Basics - Anfänger-Themen 7
R "implements Serializable" Fehler beim kompilieren Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben