Override in Interfaces

Status
Nicht offen für weitere Antworten.
K

Kirias

Gast
Guten Abend allerseits!

Habe folgende Situation:

Interfacehierarchie
Code:
public abstract interface Value{

	abstract double getValue();
}

vererbt an
Code:
public interface Value1D extends Value {

	double getValue(double state);
}


wird implementiert durch:
Code:
public class Swaption extends Option implements Value1D {
	//is an option on an interest rate swap
	do lalala...
        
        public double getValue(double underlyingValue){
		do lalala2
		return value;
	}
}




Jetzt meckert er, dass ich zwar die direkte Methode aus dem Interface Value1D implementiert habe, aber nicht die Methode aus dem SuperInterface Value. Müsste die nicht üerlagert worden sein? Ich versteh es nicht...

Liebe Grüße
Kirias[/code]
 
B

Beni

Gast
Wichtig ist nicht nur der Name einer Methode, auch die Argumente sind Teil der Signatur.

Vergleich mal:
Code:
double getValue() // Interface Value
double getValue( double ) // Interface ValueID

Das sind zwei verschiedene Methoden. Die eine benötigt was zum rumrechnen, die andere nicht.
 
B

bygones

Gast
die beiden methoden haben eine untersch. signatur....

double getValue()
getValue(double state)

....
 
K

Kirias

Gast
wie kriege ich dann da ein sauberes override hin? im SuperInterface
Code:
abstract double getValue(Object object);

verwenden?

müsste ich dann casten? wenn ja in welcher reihenfolge?


muss schon sagen ... java ist ganz schön komplex...
 
K

Kirias

Gast
ach ja, ganz vergessen: ich dachte, dass ich das Problem der verschiedenen Parameter mit "abstract" ausgemerzt hätte?
 

Illuvatar

Top Contributor
Kirias hat gesagt.:
ach ja, ganz vergessen: ich dachte, dass ich das Problem der verschiedenen Parameter mit "abstract" ausgemerzt hätte?

Nein, das hat nichts miteinander zu tun.
abstract hat in interfaces keine Bedeutung, das das implizit immer dasteht.

Du müsstest eben in der implementierenden Klasse beide Methoden implementieren...
 
K

Kirias

Gast
... und dann die "falsche" zur Sicherheit private deklarieren und unbenutzt lassen ... ok
 
B

bygones

Gast
Kirias hat gesagt.:
... und dann die "falsche" zur Sicherheit private deklarieren und unbenutzt lassen ... ok
das wird nicht gehen... man kann die Sichtbarkeit einer vererbten methode nicht verringern.

entweder gleiche signatur - dann stellt sich aber die frage nach dem sinn der beiden interfaces - oder eine leere Implementation in der Klasse oder eine NoSuchMethodException schmeißen z.b
 
K

Kirias

Gast
ich habe jetzt die Hierarchie weggelassen, da ich etwas unter Zeitdruck stehe und das nicht nach einer schnellen Lösung aussieht (das ist erste meine erste Woche in Java und ich kann mich da nicht mehr so weit reinfuchsen). Trotz allem vielen Dank für die Lösungsvorschläge!!!

Aber um bei der Diskussion zu bleiben: Es muss doch möglich sein, eine der Klassenhierarchie entsprechende Interfacehierarchie aufbauen zu können ohne rumtricksen zu müssen. Schließlich kann ich auf Klassenebene auch abstrakte Methoden aufbauen. wieso nicht auch abstrakte Interfacelayer? Die Lösung der "leeren" Methoden halte ich nicht für sinnvoll, da dann der Sinn der Interfaces völlig übergangen wird. Das muss auch anders möglich sein.
 
B

bygones

Gast
Kirias hat gesagt.:
aber um bei der Diskussion zu bleiben: Es muss doch möglich sein, eine der Klassenhierarchie entsprechende Interfacehierarchie aufbauen zu können ohne rumtricksen zu müssen. Schließlich kann ich auf Klassenebene auch abstrakte Methoden aufbauen. wieso nicht auch abstrakte Interfacelayer? Die Lösung der "leeren" Methoden halte ich nicht für sinnvoll, da dann der Sinn der Interfaces völlig übergangen wird. Das muss auch anders möglich sein.
klar kann man das ohne rumzutricksen - man muss nur eine klare und logische Struktur in der Verberungshierarchie bzw. Implementationshierarchie haben....

bei dir ist die Sache einfach: du die Klasse implementiert 2 Interfaces, in denen sind zwei Methoden vorgegeben, ergo muss deine Klasse die beiden Methoden implementieren.....
 
S

SlaterB

Gast
abstrakte Klasse bedeutet einfach nur dass ein Teil der Klasse ein Interface ist,
also Signaturen von Operationen ohne deren Implementation enthält

Interface sind demnach IMMER komplett abstrakt per Definition,
es macht keinen Sinn da irgendwas noch abstrakter zu machen

und deine Frage
"Es muss doch möglich sein [..] wieso nicht auch abstrakte Interfacelayer?"
bietet ohne genauere Begründung keinen Angriffspunkt um dir das auszureden,
wieso sollte das deiner Meinung nach so sein?


abstrakt hat in Klassen (wie bei gesamten Interfacen) immer nur mit Signatur <-> Implementierung zu tun,
genauso bezieht sich Überschreiben immer nur auf eine feste Signatur,

wenn du weitere Parameter an die Operation hinzufügst ist das eine völlig andere,
dann ist Java total egal dass der Operationsname gleich ist!

-------
was bisher nur halb erwähnt wurde und dir vielleicht noch unklar erscheint:
die einzige Möglichkeit in deinem Fall Operationen zu überschreiben:

Code:
public interface Value{

    double getValue();
}

public interface Value1D extends Value {

   double getValue();
}

dies macht aber keinen Sinn denn die Operation "double getValue();" ist im Interface Value1D sowieso schon enthalten durch die Vererbung,
es ändert sich absolut nix
 
K

Kirias

Gast
Ok, habe ich verstanden.
Interfaces sind per se abstrakt, denn sonst könnten sie ihre Funktion nicht ausfüllen. Deswegen macht es auch keinen Sinne ein "abstraktes" interface aufzubauen.
Ein override ist nur bei gleichen Parametern möglich.

Vielen Dank!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
onlyxlia Was bedeutet das @Override? Java Basics - Anfänger-Themen 1
M Override zeigt keinen Effekt Java Basics - Anfänger-Themen 9
I equals (Override) mit eigener Exception (keine Runtime-Exception) Java Basics - Anfänger-Themen 9
S Warum @Override? Java Basics - Anfänger-Themen 2
S Compiler-Fehler not abstract and does not override Java Basics - Anfänger-Themen 9
M abstract method does not override or implement.... Java Basics - Anfänger-Themen 7
D Kapselung override Setter Java Basics - Anfänger-Themen 5
M @override Java Basics - Anfänger-Themen 15
D Was genau bedeutet und bewirkt dieses @override? Java Basics - Anfänger-Themen 15
T Override klappt nochmal wie? Java Basics - Anfänger-Themen 3
B Annotation : @Override Java Basics - Anfänger-Themen 9
K Interface implementieren @Override Java Basics - Anfänger-Themen 8
U override Problem mit exception Java Basics - Anfänger-Themen 5
G Anfängerfrage zu "@Override" Java Basics - Anfänger-Themen 5
S @ override + noch was Java Basics - Anfänger-Themen 3
G JDialog + p aintComponent-Override Java Basics - Anfänger-Themen 3
R Fehler: "Class XY ist not abstact and does not override Java Basics - Anfänger-Themen 3
B Eclipse 3.2 + @override Java Basics - Anfänger-Themen 3
K <class> is not abstract and does not override abstract Java Basics - Anfänger-Themen 5
D Interfaces von Interfaces macht das noch Sinn? Java Basics - Anfänger-Themen 21
J Methodenaufrufe abstrakte Klassen, Interfaces Java Basics - Anfänger-Themen 17
M Wozu dient Interfaces? Java Basics - Anfänger-Themen 6
O Mehrfachvererbung auf Spezifikations- und Implementierungsebene in Java. Interfaces Java Basics - Anfänger-Themen 19
U Funktionale Interfaces mit mehreren abstrakten Methoden? Java Basics - Anfänger-Themen 8
M Interfaces Aufgabe Java Basics - Anfänger-Themen 2
I JSON / XML Struktur mit Vererbung / Interfaces Java Basics - Anfänger-Themen 0
I XML und Interfaces aus anderen Projekten Java Basics - Anfänger-Themen 3
8u3631984 Record - Interfaces Java Basics - Anfänger-Themen 4
M Wie kann ich in einem Konstruktor die Methode eines anderen Interfaces mit den jeweiligen Parametern aufrufen? Java Basics - Anfänger-Themen 8
H Sinn von Interfaces Java Basics - Anfänger-Themen 21
B JaxB und Interfaces? Java Basics - Anfänger-Themen 2
M Funktionale Interfaces Java Basics - Anfänger-Themen 3
Kirby.exe Frage zur Verwendung von Interfaces Java Basics - Anfänger-Themen 6
H Frage zu interfaces Java Basics - Anfänger-Themen 1
J Zweck von Interfaces immer noch nicht klar Java Basics - Anfänger-Themen 3
M Klasse erbt von Interfaces Java Basics - Anfänger-Themen 6
T Interfaces in erbenden Klassen Java Basics - Anfänger-Themen 2
T Abstrakte Klasse und Interfaces Java Basics - Anfänger-Themen 12
H Polymorphie Interfaces und statischer Typ Java Basics - Anfänger-Themen 33
T Verständnisfrage zu Interfaces Java Basics - Anfänger-Themen 7
F Exceptions in Interfaces Java Basics - Anfänger-Themen 4
F Interface Warum Interfaces? Java Basics - Anfänger-Themen 5
R interfaces Java Basics - Anfänger-Themen 1
B Interfaces Java Basics - Anfänger-Themen 6
A Vererbung/Interfaces/Generics Java Basics - Anfänger-Themen 12
D Interface Wieso Aufruf aller Methoden eines Interfaces? Java Basics - Anfänger-Themen 11
J Interfaces? Java Basics - Anfänger-Themen 32
M Erstellung Interfaces....totale Anfängerfrage Java Basics - Anfänger-Themen 16
S Erste Schritte Innere Klassen und Interfaces Java Basics - Anfänger-Themen 2
J Wofür dienen Interfaces ? Java Basics - Anfänger-Themen 1
Hijo2006 Frage zu Interfaces Java Basics - Anfänger-Themen 21
Hacer Interfaces implementieren Java Basics - Anfänger-Themen 7
H Implementierung eines Interfaces erweitern Java Basics - Anfänger-Themen 13
L Via Interfaces unterschiedliche Klassen ansprechen Java Basics - Anfänger-Themen 8
A Verwendung von Interfaces Java Basics - Anfänger-Themen 7
J Interfaces Java Basics - Anfänger-Themen 15
D Frage bzgl. Interfaces Java Basics - Anfänger-Themen 10
D Interface Verständnisprobleme von Interfaces Java Basics - Anfänger-Themen 5
D Interface Interfaces und abstrakte Klassen implementieren Java Basics - Anfänger-Themen 4
S Rollen verändern, Interfaces austauschen wie? Java Basics - Anfänger-Themen 10
K Interfaces/Klassen etc. Java Basics - Anfänger-Themen 6
F Implementierung von Interfaces -> Problem mit main Java Basics - Anfänger-Themen 12
S Verständnisproblem bei Interfaces Java Basics - Anfänger-Themen 6
I Interface Verständnisfrage Interfaces (Bsp.: Enumeration) Java Basics - Anfänger-Themen 2
M Frage zu Generics in Klassen, Abstrakten Klassen und Interfaces Java Basics - Anfänger-Themen 5
O Java Interfaces für andere Programmiersprachen zur Verfuegung stellen? Java Basics - Anfänger-Themen 2
K Interface Generics, Interfaces und Listen - ich bin verwirrt. Java Basics - Anfänger-Themen 7
G Instanzen eines Interfaces erzeugen Java Basics - Anfänger-Themen 7
M Compiler-Fehler Alle Methoden eines Interfaces Implementiert dennoch Fehler Java Basics - Anfänger-Themen 3
V Interface Interfaces und abstrakte Klassen Java Basics - Anfänger-Themen 3
F Best Practice UML/Planung eines Projektes (Klassen, Interfaces, ...) Java Basics - Anfänger-Themen 0
V Vererbung Vererbung, Interfaces und OOP... Java Basics - Anfänger-Themen 10
C Sinn eines Interfaces? Java Basics - Anfänger-Themen 4
A Interface Poymorphismus bei Interfaces Java Basics - Anfänger-Themen 2
Pentalon Eclipse JUNO keine Vorschläge von Methoden bzw. Interfaces der eigenen Klassen Java Basics - Anfänger-Themen 5
R Mehrere Interfaces(Comparable, ...) Java Basics - Anfänger-Themen 2
J Interfaces Abstrakte Klassen Java Basics - Anfänger-Themen 15
D Interfaces und allgemeingültige Methodenaufrufe Java Basics - Anfänger-Themen 6
H Erste Schritte 2 User Interfaces für eine Anwendung Java Basics - Anfänger-Themen 7
S OOP Wann Proxies und Interfaces? Java Basics - Anfänger-Themen 3
M Interface @Inject mit Interfaces? Java Basics - Anfänger-Themen 2
F Interface Unterschied von Attributen und Methoden bei abstrakten Klassen und Interfaces Java Basics - Anfänger-Themen 5
V mehrfachvererbung unter interfaces Java Basics - Anfänger-Themen 10
J Interface Wie funktioniert das mit den Interfaces. Ich verstehe es einfach nicht! :( Java Basics - Anfänger-Themen 15
T Interfaces und Implementierungen Java Basics - Anfänger-Themen 12
S Interface mehrere Interfaces Java Basics - Anfänger-Themen 2
M Vererbung Problem bei Interfaces Java Basics - Anfänger-Themen 8
H Dynamische Bindung mit Interfaces und LinkedList Java Basics - Anfänger-Themen 7
F Interfaces Java Basics - Anfänger-Themen 4
M Frage zu Interfaces Java Basics - Anfänger-Themen 3
N Generics und Interfaces Java Basics - Anfänger-Themen 5
D Abstrakte Klassen und Interfaces als Paramter in Funktionen Java Basics - Anfänger-Themen 3
P OOP Aufruf eines Interfaces Java Basics - Anfänger-Themen 4
N OOP Vererbung von Interfaces Java Basics - Anfänger-Themen 12
S Verständnisfrage zu Interfaces Java Basics - Anfänger-Themen 2
D Sinn von Interfaces - Wozu? Java Basics - Anfänger-Themen 9
P Frage zu Interfaces Bsp. Java Basics - Anfänger-Themen 9
A Deklarationen in abstrakten Klassen und Interfaces Java Basics - Anfänger-Themen 11
R Adapterklassen vs Interfaces Java Basics - Anfänger-Themen 6
P Interfaces -> eins oder mehrere für eine Anwendung? Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben