Ich habe eine Hierarchie von drei Schnittstellen, Großeltern, Eltern und Kind. Eltern und Kind haben eine Methode "hinzufügen", die verschiedene Eingabeparameter im Kind erfordert. Während es kein Problem ist, die erforderliche Signatur im Kind hinzuzufügen, wird die geerbte Methode sinnlos sein, also gibt es eine Möglichkeit, es überhaupt nicht dort zu haben? Die anderen Methoden funktionieren gut.Wie kann ich in einer Java-Schnittstelle * eine * bestimmte Methode verwenden, die von einer übergeordneten Schnittstelle geerbt wurde?
Vielleicht, zu erreichen, was ich will, ich völlig das Design verbessern, so dass ich kurz umreißen, was die Schnittstellen zu:
I Zählerstände zu sammeln, die von einer Zeit und einem Wert bestehen. Die Großmutter-Schnittstelle ist für eine einzige Lesung. Ich habe auch Klassen, die eine Reihe von aufeinanderfolgenden Lesungen (eine Serie) darstellen, und eine, die mehrere Serien enthält, die über den gleichen Zeitraum laufen (nennen wir das einfach eine Tabelle).
Die Tabelle kann als eine Reihe betrachtet werden (die die Werte orthogonal zur Zeitachse aggregiert), und sowohl Tabelle als auch Reihe können als eine einzige Lesung betrachtet werden (die Implementierungen bieten unterschiedliche Aggregationsmöglichkeiten), daher die Vererbung. Dies scheint gut zu funktionieren, aber für die Add-Methode. (Ich kann der Serie einen einzelnen Punkt hinzufügen, aber für die Tabelle brauche ich einen zusätzlichen Parameter, der mir sagt, zu welcher Serie er gehört.)
+1 für die endgültige Antwort auf, warum dies nicht funktioniert wie Schnittstellen. Ich stimme zu, dass das Auslösen von Ausnahmen bei jemandem, der versucht, sich entsprechend dem Vertrag zu verhalten, hässlich ist. Ich werde Andy Whites Vorschlag für eine Lösung prüfen. –