OOP: Überschreiben/Implementierung von Methoden

automatix

Aktives Mitglied
Hallo zusammen!

Das Thema ist sogar etwas allgemeiner, als eine "allgemeines Java-Thema" -- es geht um das Überschreiben / die Implementierung von Methoden generell.

Es gibt zunächst zwei Klassen ClassA und ClassB (ClassB erbt von ClassA). Weiterhin gibt es zwei andere Klassen ClassX und ClassY (ClassY erbt von ClassX). Die Klasse ClassA ist abstrakt und definiert eine abstrakte Methode method(ClassX objectX). Die Klasse ClassB muss sie implementieren. Also, eigentlich überschreiben: method(ClassX objectX).

Das Problem ist, dass die Methode method(...) der konkreten implementierenden Klasse ClassB eigentich nicht ein Objekt vom Typ ClassX, sondern nur eins vom Typ ClassY sinnvoll verarbeiten kann.

Beispliel:
ClassX ist eine allgemeine Tabellenklasse.
ClassY ist eine Klasse, die eine konkrete Tabelle "bücher" darstellt und dementsprechend Zugriffsmethoden für die spezifischen Attribute "titel", "autor" und "anzahlSeiten" hat.
ClassZ (extends ClassX) ist eine Klasse, die eine konkrete Tabelle "räume" darstellt und dementsprechend Zugriffsmethoden für die spezifischen Attribute "raumNr", und "gebäude" hat.

Wie würdet Ihr das Problem lösen?

Danke
 

MQue

Top Contributor
Also, eigentlich überschreiben: method(ClassX objectX).

Würd ich nicht sagen, ClassB muss ClassA implementieren, es gibt ja keinen Methoden- Rumpf in ClassA.
Schau dir mal das Liskovsche Substitutions- Prinzip an (Liskovsches Substitutionsprinzip ? Wikipedia).

Ich würde eine Klasse, welche 3 Dimensionen darstellen soll, auch nicht von einer Klasse ableiten, welche 2 Dimensionen darstellt -> da würd ich mir das Ableiten sparen.

Generell: wenns nach dem Ableiten undurchschaubarer/komplizierter/aufwendiger wird also ohne ableiten, dann sollst du nicht ableiten.
Statt dem Ableiten kann man auch noch das Decorer- Pattern verwenden - ist manchmal besser.
 
Zuletzt bearbeitet:

automatix

Aktives Mitglied
@MQue
Danke für Deine Antwort und speziell für die Hinweise auf das Liskovsche Substitutionsprinzip und das Decorator-Entwurfsmuster.

Würdest Du dich also im Beispiel mit den Tabellen des Decorator-Patterns bedienen?
 

MQue

Top Contributor
JA, würd ich machen, da hast du eine Referenz auf ein Objekt einer anderen Tabelle und kannst aufrufen was du willst/bzw. was du brauchst.

Mit der Vererbung erbst du alles von der Basisklasse, auch das was nicht gebracuht wird, das wird dann oft sehr verwirrend, umständlich und im OO- Sinne falsch.
 

MQue

Top Contributor
Ja genau, das sind Generics, Ich würde an deiner Stelle statt:

Java:
ClassB objectB = new ClassB();
ClassY objectY = new ClassY();

->

Java:
ClassA objectB = new ClassB();
ClassX objectY = new ClassY();


Immer den Typ der Basisklasse verwenden, mit der dein Programm noch funktioniert.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
LimDul XSD To Java - Überschreiben von Assoziationen Allgemeine Java-Themen 1
C Überschreiben mit kontravariante Parameter Allgemeine Java-Themen 13
T Überschreiben von Methoden Allgemeine Java-Themen 6
K Überschreiben von Variablen bei rekursivem Funktionsaufruf Allgemeine Java-Themen 2
MQue Spezialfrage Überschreiben von Methoden Allgemeine Java-Themen 14
M Überschreiben der clone()-Methode Allgemeine Java-Themen 10
T Überschreiben von Methoden erzwingen Allgemeine Java-Themen 20
T Direktes Überschreiben Allgemeine Java-Themen 7
J Überschreiben von Variablen Allgemeine Java-Themen 3
vogella Überschreiben von equals und hashcode für Collection Allgemeine Java-Themen 7
M Überschreiben? Allgemeine Java-Themen 3
A FileChooser Datei-Überschreiben Abfrage Allgemeine Java-Themen 2
K Überschreiben von 'static'-Methoden hat anderes Verhalten? Allgemeine Java-Themen 2
L Unterschied zwischen List und LinkedList implementierung? Allgemeine Java-Themen 15
boschl2000 Springerproblem-Implementierung funktioniert nicht richtig Allgemeine Java-Themen 1
L rotateLeft implementierung Allgemeine Java-Themen 2
R In der Ausgabe sollte anstelle des obersten Sterns ein "+" stehen nur scheitere ich bei der Implementierung Allgemeine Java-Themen 9
D Input/Output Implementierung eines CommandHandlers/Parsers für viele Eingaben Allgemeine Java-Themen 26
Stonie Prüfen von direkter Implementierung eines Interfaces Allgemeine Java-Themen 7
S Mutable objects und Implementierung von ChangeEvents Allgemeine Java-Themen 5
W Queue Implementierung Allgemeine Java-Themen 6
C Ein Iterator ist eine Implementierung des Interface Iterable? Allgemeine Java-Themen 2
F Implementierung von Teilprogrammen [Java|Python] Allgemeine Java-Themen 7
I TimSort - Sortieralgorithmus - Erklärung und Pseudocode - Implementierung Allgemeine Java-Themen 2
L Implementierung eines AVT-Baums Allgemeine Java-Themen 2
ruutaiokwu burstsort-implementierung in java? Allgemeine Java-Themen 2
D Implementierung einer Mehrsprachigkeit, wichtig ? Allgemeine Java-Themen 5
D Implementierung einer Rechteverwaltung Allgemeine Java-Themen 2
A Implementierung eines Algorithmus (Farthest Insertion zur Lösung des TSP) in O(n²) Allgemeine Java-Themen 2
R "Countdown" Implementierung Allgemeine Java-Themen 5
K A*-Implementierung flexibler machen Allgemeine Java-Themen 4
J Java-Implementierung diverser Beziehungen zwischen Klassen bzw. Objekten Allgemeine Java-Themen 2
S BlueJ Cäsar-Implementierung Allgemeine Java-Themen 6
S Implementierung Programmneustart Allgemeine Java-Themen 10
R Implementierung eines Interface durch 2 verschiedene Klassen Allgemeine Java-Themen 6
G Implementierung einer Kommunikation Allgemeine Java-Themen 7
S Implementierung einer PluginArchitektur Allgemeine Java-Themen 5
K Objekt einer konkreten Implementierung eines Interfaces durch übergebenen String Allgemeine Java-Themen 2
R Intervall-Implementierung mit selbstgebauter LinkedList Allgemeine Java-Themen 7
J Best Practice für implementierung von equals(...) Allgemeine Java-Themen 7
Kr0e Eigene RMI Implementierung Allgemeine Java-Themen 3
V Wie finde ich die konkrete Implementierung? Allgemeine Java-Themen 8
G Implementierung vom AKS-Test Allgemeine Java-Themen 11
R software implementierung Allgemeine Java-Themen 3
N Observer/Observable der JAVA-API od. eigene Implementierung Allgemeine Java-Themen 2
K Design / Implementierung Allgemeine Java-Themen 5
B jre browser implementierung ? Allgemeine Java-Themen 4
B Elegantere Lösung bei der Implementierung eines Interfaces Allgemeine Java-Themen 2
G Klasse Queue Implementierung in Java Allgemeine Java-Themen 4
G Eigene PrintService Implementierung. Allgemeine Java-Themen 5
B Leere vererbte Interface-Methoden Allgemeine Java-Themen 8
R Programm führt Methoden gleichzeitig aus Allgemeine Java-Themen 2
Encera Unterschied zweier "toString"-Methoden Allgemeine Java-Themen 1
torresbig Klasse mit extends Calendar über Methoden ändern (Hirnblockade) Allgemeine Java-Themen 7
Sachinbhatt Sind alle Methoden in Java implizit virtuell Allgemeine Java-Themen 2
B Arrays von Methoden möglich? Allgemeine Java-Themen 44
S Mit Methoden kann man definieren für was <T> steht. Geht das auch irgendwie für Variablen? Allgemeine Java-Themen 12
N abstracte klassen methoden Allgemeine Java-Themen 32
G Methoden für die Zukunft sinnvoll? Allgemeine Java-Themen 4
nonickatall Methoden Kann man Klassen/Methoden aus Variablen heraus aufrufen? Allgemeine Java-Themen 6
LimDul Hä? Lambda-Ausdruck geht, Methoden-Referenz nicht Allgemeine Java-Themen 8
B Methoden Java Getter und Setter Methoden Allgemeine Java-Themen 9
Y Java Methoden unterschiedliche Zahlenreihen Allgemeine Java-Themen 2
S Interface Design von HookUp oder Callback Methoden für eigenes Framework Allgemeine Java-Themen 9
F Sich automatisch aufrufende Java-Methoden Allgemeine Java-Themen 2
J Namen von Methoden über Reguläre Ausdrücke bearbeiten Allgemeine Java-Themen 6
D Methoden Methoden anpassen und fehlende Funktionen hinzufügen Allgemeine Java-Themen 475
V Threads Probleme beim Aufrufen von Methoden einer anderen Klasse (Threads) Allgemeine Java-Themen 14
R Statistische Methoden (Mathematik) Aufgabe Allgemeine Java-Themen 9
X Brüche kürzen mittels Methoden und ggT Allgemeine Java-Themen 15
L Operatoren Java Reflections: Alle Methoden einer Klasse aufrufen ohne Exceptions Allgemeine Java-Themen 5
L mehrere Methoden Allgemeine Java-Themen 19
KeexZDeveoper Zugriff auf Methoden vom Server Allgemeine Java-Themen 7
B StAX Parser - mehrere Methoden, ein XML Allgemeine Java-Themen 4
F Operationen/Methoden einen WebService im Browser mit Apache Axis aufrufen Allgemeine Java-Themen 4
A Automatisches Methoden Laufzeiten logging? Allgemeine Java-Themen 7
M Quellcode von Java-Methoden Allgemeine Java-Themen 9
rentasad Design-Frage - Interfaces, Klassen, statische Methoden Allgemeine Java-Themen 3
N HashMap und Methoden richtig einbinden Allgemeine Java-Themen 2
R Variable durch mehrere Methoden ändern und nutzen Allgemeine Java-Themen 17
Q-bert Methoden Methoden in Java Allgemeine Java-Themen 13
D Methoden Java-Aufgabe Allgemeine Java-Themen 2
M Compiler-Fehler Methoden-Referenz Allgemeine Java-Themen 5
X Threads Externe Variablen in Run Methoden verändern Allgemeine Java-Themen 4
S 2 methoden mit gleichen namen und ein Interface Allgemeine Java-Themen 9
F Enum-werte als Methoden-Parameter übergeben Allgemeine Java-Themen 6
N Vererbung Design-Problem mit vorhandenen, von der Klasse unabhängigen Methoden Allgemeine Java-Themen 12
E OOP Objekte und Methoden Allgemeine Java-Themen 1
K Java ruft Methoden nicht der Reihe nach auf Allgemeine Java-Themen 14
N Methoden Methoden einer Klasse auf Grundlage eines Strings aufrufen Allgemeine Java-Themen 6
T Java Array in Methoden Allgemeine Java-Themen 1
D Code für bereitgestellte Methoden Allgemeine Java-Themen 1
P Entity Objekt Methoden vs Service methoden Allgemeine Java-Themen 2
R Signatur von Methoden in eine Datei schreiben? Allgemeine Java-Themen 4
A Methoden verändern Allgemeine Java-Themen 12
F Methoden Arraylist weiterverwenden nach methoden Aufruf Allgemeine Java-Themen 2
J Best Practice Testen von protected Methoden Allgemeine Java-Themen 7
L Methoden "Schiffe versenken" Quellcode in Methoden umwandeln Allgemeine Java-Themen 6
G Matrix reduzieren zwei Methoden Allgemeine Java-Themen 2
Sogomn Best Practice "Doppelte" Methoden Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben