[JAVA] Implementierung der Methode wählen.

pilso

Lt. Junior Grade
Registriert
Juli 2004
Beiträge
272
Hallo,

Ich suche nach einer Möglichkeit in JAVA eine bestimmte Implementierung einer Methode aufzurufen.

In C++ kann ich ja mit Myclass::methode() bestimmen welche Methode genau ich aufrufen will. In JAVA kann ich this.methode() und super.methode() sagen.

Wie aber rufe ich eine Methode auf die noch eins weiter oben deklariert ist?

Also z.B.

class A { doit() { }}

class B extends A {doit() { }}

class C extends B{doit() { }}

Ich möchte nun auf einem Objekt des Typs C die Implementation aus der Klasse A aufrufen.
Mit super. komm ich ja nur bis Klasse B.

Danke im Voraus.
 
Geht nicht. Man kann immer nur auf die Methoden der direkten Elternklasse zugreifen. Wäre sonst auch zu unübersichtlich.
 
Mit Mehrfachvererbung hat das nichts zu tun - allerdings ist das ein deutlicher Hinweis auf schlechtes Design. Auch in C++ wäre das "schmutzig". Warum willst du das denn machen bzw. was ist die Aufgabenstellung?
 
Erst mal danke für eure Antworten.

Ich möchte die erste Zeile eines Grids blau machen.
Ich habe eine Klasse die von JTable abgeleitet ist. Ich überschreibe die Methode getCellRenderer(). In dieser rufe ich setForeground() auf, was zur Folge hat, daß die Implementierung in JComponent aufgerufen wird. In dieser erfolgt aber ein repaint(), der wiederum meine getCellRenderer() aufruft. Also ein Endlosspiel.
Deshalb wollte ich gerne die setForeground() von Component aufrufen, da dort kein repaint() erfolgt.

Zur Zeit habe ich es über einen DefaultTableCellRenderer gelöst, dessen Foreground ich setze und als return-Wert zurückgebe.
 
Ehrlich gesagt verstehe ich das jetzt nicht so ganz.

class A
|
class B
|
class C

und du willst in C eine bestiommte Eigenschaft haben, die in A ist.
Aber wenn sie in A ist, so muss sie doch bereits in B sein.
Folglich brauchst du diese Eigenschaft lediglich aus B abzufragen.

Oder habe ich die Ableitungshierarchei von Java nicht soo ganz verstanden?
 
A und B habe ich aber nicht geschrieben und kann sie auch nicht ändern. Ich will aus der Klasse C, die ich schrieb eine Methode aus Klasse A aufrufen. Da aber B diese Methode aus A überschreibt, weiss ich nicht wie ich die aus A aufrufen soll.
 
Alternativer Vorschlag: Wie wäre es, wenn Du vor dem Aufruf von setForeground() überprüfst, ob der Vordergrund bereits die gewünschte Farbe hat? Dann würdest Du die Endlosschleife durchbrechen...
 
Hi pilso,
warum schreibst du nicht deinen eigenen CellRenderer? Swing bietet schliesslich das komplette ModelViewController an. Du musst es nur nutzen. Mit deinem Model und deinem Renderer hast du volle Kontrolle ohne JTable zu überschreiben.
Gruß,
stengbiegel
 
Zurück
Oben