Eine Klasse von mehreren Klassen ableiten?

Status
Nicht offen für weitere Antworten.

MasterEvil

Bekanntes Mitglied
Hiho, ich habe mehrere Layout-Komponenten (JLabel, JPanel, JComboBox ...) selbst gebastelt und entsprechend abgeleitet.
Jetzt hab ich aber mehrere Funktionen die in allen Komponenten gleich sind zum Beispiel zum einfacheren ändern der Größe, Farbe etc. . Da ich jetzt aber schon meine eigene Klasse von einer Klasse abgeleitet habe kann ich ja nicht eine weitere ableiten also hab ich in jeder eigenen Klasse die gleichen Funktionen.
Ist es möglich irgendwie von einer zweiten Klasse abzuleiten oder das ganze irgendwie per Interface zu implementieren? Denn wenn ich etwas an meinen Funktionen änder muss ich das immer 10x machen und das is ja eigentlich nicht der Sinn von OOP :/

Bin für jede Hilfe dankbar, hier noch ein kleines Beispiel zum besseren Verständniss:
(Meine CustomComboBox soll jetzt irgendwie die Funktionen der Klasse CustomComponent erben.)

Code:
public class CustomComboBox extends JComboBox {

	public CustomComboBox(String[][] mContent) {
		super();
		setModel(new DefaultComboBoxModel(makeVectorData(mContent)));
		setRenderer(new ComboBoxRenderer());
	    addActionListener(new BlockComboListener(this));
	}
	
	.......
}

public class CustomComponent extends JComponent {
	public void setFixedSize(int width, int height) {
		setPreferredSize(new Dimension(width, height));
		setMaximumSize(new Dimension(width, height));
		setMinimumSize(new Dimension(width, height));
	}
}
 

EOB

Top Contributor
hi, also wenn es code ist, der überall gleich ist, warum vererbst du ihn dann nicht von ganz oben? mit interfaces wäre es in diesem fall imho nicht gut lösbar, da du ja dann die methoden implementieren musst und wenn du die jeweils mit gleichm code implementiertst, haste nix gekonnt ....

grüße

EDIT: edit beachten ;)
 

MasterEvil

Bekanntes Mitglied
Ja, aber dann sind ja meine Funktionen immernoch redundant vorhanden und ichmuss, wenn ich eine Änderung vornehme diese Änderung für jede Komponente vornehmen :/

Achso, die Funktionen sind in jeder Komponente gleich.
 
S

SlaterB

Gast
da stößt du auf die Grenzen der Objektorientierung, das geht nicht

in deinem Falle schon gar nicht, stelle dir vor:

Code:
              ->  CustomComponent  
             /                         \
JComponent                               -> CustomComboBox
             \                         /
              -> JComboBox    ------ /
wenn jetzt sowohl JComboBox, als auch CustomComponent setPreferredSize() überschreiben, welche sollte dann nun gelten?

-------

interessanter ist es, wenn du in CustomComponent neue Funktionalität einfügst,
wie 'myLongOperationToCalculateSize()',
welche allen Subkomponenten zur Verfügung stehen soll,
dafür wäre die Notlösung, diese Operation in ein separates Objekt zu verschieben, das jede eigene Klasse als Exemplarvariable halten muss
-> immer noch 10x das gleiche, aber wenigstens minimiert auf einfache Dinge wie Exemplarvariablen und einfache Delegator-Operationen a la
public void longOperation() {
object.longOperation()
}
 

MasterEvil

Bekanntes Mitglied
Hm, ja :(
Verstehe das Problem und die JComboBox kann ich ja auch nicht von meiner CustomComponent ableiten :/

Na dann bleibt mir wohl nix anderes übrig als die Funktionen in jeder Komponente unter zu bringen. Vielen Dank für eure Hilfe :)

[Edit]
Ach hab eben erst bemerkt dass das bei dir garkeine Signatur ist :D
Das ist doch genau das was ich brauche :) das kann ich ja dann auch mit nem Interface dann kombinieren, super THx :)
 

MasterEvil

Bekanntes Mitglied
Jep, THx!
So ähnlich wie es mit dem "Decorator Pattern" beschrieben ist hatte ichs jetzt auch umgesetzt.

Also im Prinzip implementiere ich nur nen Interface damit ich in meiner IDE bei Veränderungen auch noch nen bisschen klar komme und dann eben in jeder Komponente ein Objekt einer Klasse welche die sonst redundanten Funktionen beinhaltet:

Code:
public class CustomComboBox extends JComboBox implements CustomComponentInterface {

	private final CustomComponent comp;
	
	public BlockComboBox(String[][] mContent) {
		super();
		comp = new CustomComponent(this);
		setModel(new DefaultComboBoxModel(makeVectorData(mContent)));
		setRenderer(new ComboBoxRenderer());
	        addActionListener(new CustomComboListener(this));
	}

	public void setFixedSize(int width, int height) { comp.setFixedSize(width, height); }
}

public class CustomComponent {
	private JComponent component = null;
	public CustomComponent(JComponent c) { component = c; }
	public void setFixedSize(int width, int height) {
		component.setPreferredSize(new Dimension(width, height));
		component.setMaximumSize(new Dimension(width, height));
		component.setMinimumSize(new Dimension(width, height));
	}
	public interface CustomComponentInterface {
		public void setFixedSize(int width, int height);
	}
}
 

MasterEvil

Bekanntes Mitglied
Öh, OK :D

Gibt es irgendwo ne Übersicht was es alles so für Patterns gibt?
Gibt bestimmt noch einige Möglichkeiten mit denen ich meinen Code ein bisschen vereinfachen/aufwerten kann.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
-horn- EINE setter/getter klasse aus mehreren klassen befüllen Java Basics - Anfänger-Themen 13
berserkerdq2 Intelij, wie kann ich einstellen, dass die aktuelle Klasse ausgeführt wird, wenn ich aufs Startsymbol drücke, gibts da eine Tastenkombination? Java Basics - Anfänger-Themen 11
J Zugriff auf eine 2. Klasse die per UI-Designer erstellt wurde Java Basics - Anfänger-Themen 1
_user_q Wie eine Methode/Funktion aus einer Klasse mit Constructor aufrufen? Java Basics - Anfänger-Themen 20
frager2345 Singleton-Muster Java ->Nur eine Instanz einer Klasse erzeugen können Java Basics - Anfänger-Themen 45
berserkerdq2 Habe eine Klasse, welche public ist, diese hat eine public Methode, die nicht static ist. Wenn ich nun versuche aufzurufen Probleme? Java Basics - Anfänger-Themen 8
berserkerdq2 Zwei Klassen Erben von der Klasse A, die eine Klasse kann ich an Methoden übergeben, die als Parameter A haben, die andere nicht? Java Basics - Anfänger-Themen 3
F Suche nach betreuender Person für eine Jahresarbeit der 12. Klasse. Java Basics - Anfänger-Themen 6
M Wie kann ich eine Methode aus einem Interface in eine Klasse implementieren, so dass sie ihre Funktion ausführt? Java Basics - Anfänger-Themen 7
Igig1 Welche Werte sind als default Werte in einem Array, der als Datentyp eine Klasse hat? Java Basics - Anfänger-Themen 1
O Wie erstelle ich eine Instanz in einer Klasse für die ich die Instanz will? Java Basics - Anfänger-Themen 4
Vivien Auf eine Variable von einer anderen Klasse aus zugreifen Java Basics - Anfänger-Themen 3
E Warum lässt sich eine Klasse nicht starten, wenn eine andere Klasse in dem Modul fehlerhaft ist? Java Basics - Anfänger-Themen 1
P Wie rufe ich Methoden mit einer Referenz auf eine Klasse||Objekt auf Java Basics - Anfänger-Themen 4
jonny_2k12 Wie kann ich eine ArrayList aus einer Klasse in eine andere übergeben? Java Basics - Anfänger-Themen 21
M Zugriff auf eine ArrayList in einer anderen Klasse Java Basics - Anfänger-Themen 4
bensdt Klasse erweitern um eine Methode "void decrement()" Java Basics - Anfänger-Themen 5
D OOP- Eine Klasse in mehrere Klassen aufteilen Java Basics - Anfänger-Themen 7
W Zwei Programme sollen auf eine Klasse zugreifen Java Basics - Anfänger-Themen 18
L Klassen Wie “installiert” man eine Klasse? Java Basics - Anfänger-Themen 2
L Klassen Kann eine Unterklasse einer abstrakten Klasse ein Interface implementieren? Java Basics - Anfänger-Themen 2
H Eine befühlte Klasse weiter geben an Controller Java Basics - Anfänger-Themen 12
I Wie benutzt man eine Klasse? Java Basics - Anfänger-Themen 13
A Variablen Main Klasse soll auf eine andere Klasse zugreifen Java Basics - Anfänger-Themen 3
F OOP Instanz einer Klasse an eine andere weitergeben Java Basics - Anfänger-Themen 16
M Aufgabe: Eine Klasse und viele Untermethoden Java Basics - Anfänger-Themen 30
DaCrazyJavaExpert Klassen Von einer Klasse auf eine erbende Klasse zugreifen Java Basics - Anfänger-Themen 13
L Eine Klasse aus dem gleichen Package starten Java Basics - Anfänger-Themen 3
B Wie kann ich eine Methode einer selbst erstellten Klasse statisch importieren? Java Basics - Anfänger-Themen 5
D Klasse durch eine Schleife wiederholen Java Basics - Anfänger-Themen 1
J Werte an eine andere Klasse übergeben Java Basics - Anfänger-Themen 4
T Erste Schritte Schreiben Sie eine Klasse Zeit, die eine Zeitdauer in Minuten beschreibt. Die Anzahl Minuten verwalt Java Basics - Anfänger-Themen 3
U Klassen IntelliJ14.1.1 Ultimate startet eine Main-Klasse NICHT MEHR Java Basics - Anfänger-Themen 0
P auf eine andere Klasse zugreifen Java Basics - Anfänger-Themen 12
OlafHD Einen String an eine Klasse übergeben Java Basics - Anfänger-Themen 2
O Übergabe in eine andere Klasse Java Basics - Anfänger-Themen 3
I Java Eingabe aus einer anderen Klasse in eine andere an Konstruktor übergeben Java Basics - Anfänger-Themen 4
E Suche Klasse die eine Bedinung prüft und einen von zwei Auswahlwerten zurückgibt... Java Basics - Anfänger-Themen 6
V wie kann ich eine laufende Klasse zum "stopen" bringen und zur main zurückkehren? Java Basics - Anfänger-Themen 11
W (XML/XSL) Daten aus Eclipse in eine Klasse Laden. Java Basics - Anfänger-Themen 1
S Methoden eine Instanz einer eigenen Klasse als parameter übergeben Java Basics - Anfänger-Themen 9
S Wann existiert eine Instanz (eigene Klasse) Java Basics - Anfänger-Themen 8
M Wann eine Wrapper Klasse verwenden und wann einen primitiven Datentypen? Java Basics - Anfänger-Themen 8
S Aus einer Klasse eine andere laden Java Basics - Anfänger-Themen 6
D Wie baue ich sinnvoll eine Klasse, genauer die Methodenaufrufe auf? Java Basics - Anfänger-Themen 4
S Interface Implementieren von Methoden aus einer Klasse in eine GUI Java Basics - Anfänger-Themen 6
M Klasse fuer eine 5er Liste? Java Basics - Anfänger-Themen 5
R Interface Datentyp bei Erzeugung eines Objekts, dessen Klasse eine Schnittstelle implementiert Java Basics - Anfänger-Themen 18
G Klassen Array durch eine Klasse aufrufen Java Basics - Anfänger-Themen 4
J Mehrere Klassen in eine Klasse schreiben? Java Basics - Anfänger-Themen 7
N Kann man in einem Projekt nur eine Klasse ausführen? Java Basics - Anfänger-Themen 6
K Zugriff einer Klasse auf eine andere Andere -> bad operand for binary operator Java Basics - Anfänger-Themen 5
W Klassen Kann eine Variable nicht aus einer Klasse bekommen Java Basics - Anfänger-Themen 9
J Variablen Array aus anderer Klasse auslesen-Wie verhindert man eine NullPointerException? Java Basics - Anfänger-Themen 4
M Klassen Eine Klasse abrufen ohne eine neue Instanze auf zu rufen? Java Basics - Anfänger-Themen 8
M Eine Klasse als .dmg (MAc) abspeichern Java Basics - Anfänger-Themen 5
P Eingabe aus JTextField/Area an eine andere Klasse übergeben. Java Basics - Anfänger-Themen 2
A Threads Eine Klasse muss auf Variable der Anderen warten. Java Basics - Anfänger-Themen 6
L Methoden Eine Methode aus einer anderen Klasse aufrufen Java Basics - Anfänger-Themen 4
D OOP Zugriff auf eine Klasse aus einem Interface-Objekt Java Basics - Anfänger-Themen 7
E Wert in eine andere Klasse übergeben Java Basics - Anfänger-Themen 3
L Klassen Kann eine Klasse sich selbst returnen? Java Basics - Anfänger-Themen 26
L Über abstrakte Klasse auf eine Klasse zugreifen? Java Basics - Anfänger-Themen 6
N OOP Zugriff auf eine Objekt innerhalb einer Klasse aus statischen Methoden Java Basics - Anfänger-Themen 9
M 2Methoden eine Klasse 1 Thread Java Basics - Anfänger-Themen 3
S Von einer Klasse auf eine Liste einer anderen Klasse zugreifen Java Basics - Anfänger-Themen 8
J eine Klasse mit speziellem Parameter aufrufen und verwenden Java Basics - Anfänger-Themen 9
M Suche eine Klasse, mit der ich Mausklicks ausführen kann. Java Basics - Anfänger-Themen 3
E Variable aus einer Methode heraus in eine andere Klasse übergeben Java Basics - Anfänger-Themen 13
B Was passiert, wenn eine konkrete Klasse von generische Klasse erbt? Java Basics - Anfänger-Themen 14
Q 2 Objekte in eine Klasse übergeben Java Basics - Anfänger-Themen 10
J OOP Zugriff einer Klasse auf eine Andere Java Basics - Anfänger-Themen 8
B Eine neue Klasse in anderen Projekten nutzen Java Basics - Anfänger-Themen 5
S Zwei Programme verwenden eine selbe Klasse Java Basics - Anfänger-Themen 4
M Zwei Threads greifen auf eine Methode einer Klasse zu. Komplikationen? Java Basics - Anfänger-Themen 18
S Wann wird eine Klasse geladen? Java Basics - Anfänger-Themen 17
F wie auf eine andere Klasse zugreifen? Java Basics - Anfänger-Themen 2
D Wie neue Instanz einer Klasse erstellen, von der ich nur eine andere Instanz kenne? Java Basics - Anfänger-Themen 13
C Auf eine Klasse byteweise zugreifen Java Basics - Anfänger-Themen 16
M Wie setzt sich eine Klasse zusammen? Java Basics - Anfänger-Themen 16
L Aus einer Methode eine eigene Klasse machen - modular coden Java Basics - Anfänger-Themen 14
H Eine Abstrakte Klasse muss. Java Basics - Anfänger-Themen 7
J Zugriff auf ein Array über eine andere Klasse Java Basics - Anfänger-Themen 7
G kein Zugriff auf eine Klasse in einem Unterordner Java Basics - Anfänger-Themen 11
E Eine Klasse hat eine Instanz von sich selbst. Java Basics - Anfänger-Themen 6
M Übergabe von Variablen in eine Klasse Java Basics - Anfänger-Themen 13
G Zugriff auf eine Klasse beschränken. Java Basics - Anfänger-Themen 6
A Konstruktorübergabe von einer klasse an eine andere Java Basics - Anfänger-Themen 2
G Eine Klasse als Rückgabetyp? Java Basics - Anfänger-Themen 12
G Java Klasse durch eine andere Java Klasse starten? Java Basics - Anfänger-Themen 13
W Klasse in eine extra Java-Datei Java Basics - Anfänger-Themen 21
B Wie aus instanzierter Klasse eine Methode der Main-Klasse Java Basics - Anfänger-Themen 9
philipp Wie kann ich eine Funktion einer Klasse benutzen ? Java Basics - Anfänger-Themen 2
M Methode einer Klasse in eine andere Übergeben Java Basics - Anfänger-Themen 4
T Methoden für GUI in eine andere Klasse Java Basics - Anfänger-Themen 2
H Was ist nocheinmal eine statische Klasse? Java Basics - Anfänger-Themen 6
S Variablenwert von einer Klasse in eine andere Klasse geben Java Basics - Anfänger-Themen 2
I eine Klasse aus der Jar-Datei aus dem Servlet starten Java Basics - Anfänger-Themen 4
M Braucht jede Klasse eine Schnittstelle ? Java Basics - Anfänger-Themen 4
C Methoden von verschieden Klassen in eine Klasse reinpacken? Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben