V
vanny
Gast
mir ist zu Ohren gekommen, dass Interfaces von mehreren Interfaces erben können.
1. Ist das korrekt?
2. Ist das sinnvoll?
Gruß vanny
1. Ist das korrekt?
2. Ist das sinnvoll?
Gruß vanny
Ja, folgender Code ist gültig:1. Ist das korrekt?
public interface MyInterface extends Serializable, Comparable<String> {
... ggf. weitere Methoden
}
Ich tendiere eher zu Nein. Interfaces erfüllen den Zweck, über die deklarierten Methoden eine bestimmte Funktionalität zu definieren, die ein Implementierer bereit stellen muss. Meiner Meinung nach sollten Interfaces möglichst schlank gehalten werden und alles vermieden werden, was sie aufbläht, also auch Extenden mehrerer Interfaces. Die Zusammenführung sollte letzlich auf Klassenebene passieren.2. Ist das sinnvoll?
interface Readable { int read(); }
interface Writable { void write(int i); }
interface RandomAccess extends Readable, Writable { }
Ich habe es deswegen auch relativ schwach formuliert mit: "Ich tendiere zu Nein". Dein Beispiel ist ein gutes Beispiel für einen sinnvollen Einsatz, weil die zusammengefassten Funktionalitäten thematisch gut zusammen passen. Es passiert aber schnell, dass man Funktionalitäten zusammenfasst, die nun so überhaupt nichts mit einander gemein haben. Dann finde ich es eher schlechtes Design, sie in einem Interface zusammenzufassen.kann doch schon sinnvoll sein?! Ich würd's jedenfalls nicht pauschal bewerten
Mit super ist bei Interfaces nicht viel.Zumal man dort auch schnell mal in schlingern geraten könnte, zwecks gleichnamiger JavaKonstanten.
Wie würde man die denn gezielt ansprechen, mit "super."?
InterfaceA.Konstante1
Sollte ausreichen bzw. C.A.K sollte gar nicht funktionieren.oder reicht dann (A.K)?
interface A {
public int K = 1;
}
interface B {
public int K = 9;
}
interface C extends A, B {}
class X implements C {
public void printConst() {
System.out.println(A.K);
System.out.println(B.K);
}
}
Du solltest in dem Fall lieber dieses ehrlich gesagt ziemlich kaputte Design überdenken. Constant Interface ist ja schon ein Anti-Pattern, aber das mit Mehrfachvererbung zu kombinieren setzt dem Ganzen die Krone auf.Nur nochmal zum Fairständnis xD
ich habe interface A und B und C
C erbt von A und B .
ich implementiere (und importiere) ja nur C
alle haben die Konstante K.
muss ich dan über C gehen (C.A.K)?
oder reicht dann (A.K)?
Constant Interface ist ja schon ein Anti-Pattern, aber das mit Mehrfachvererbung zu kombinieren setzt dem Ganzen die Krone auf.