Überlagerung per Interface verpflichtend machen

Status
Nicht offen für weitere Antworten.

Toddy

Neues Mitglied
Ich möchte, daß jede Klasse die das Interface implementiert die Methode nicht nur implementiert, sondern sie überlagern muß. Da es sich bei der Methode um toString() handelt, die sowieso implementiert ist, gestaltet sich das nämlich garnicht so einfach.

Java:
interface Beispiel1 {
	public String toString();
}

interface Beispiel2 {
	@Override
	public String toString();
}

Beispiel1 bringt mir nicht viel. Die Klasse Object implementiert das schon, und es gibt beim compilieren keinen Grund es mir anzukreiden, wenn ichs nicht selbst implementiere. Also dachte ich mir, ich verwende das @Override Pragma im Interface, aber das funktioniert auch nicht. Gibt es eine andere Möglichkeit für mein Vorhaben?
 

musiKk

Top Contributor
Mit Interfaces nicht, aber Du kannst die Methode in einer abstrakten Klasse als abstrakt vorgeben. Dann muss sie implementiert werden.
 

Toddy

Neues Mitglied
Hm, abstrakte Klasse kommt bloß leider nicht in Frage, da ich das in Ableitungen verschiedener Basisklassen implementiere. Das Problem läßt sich zum Glück verhältnismäßig einfach umgehen, in dem ich nun einfach getName() einführe. Ist zwar nicht ganz so schön, aber so kann ich wenigstens sicher gehen, daß es korrekt implementiert wird.

Falls es doch einen Weg geben sollte, das unter Nutzung eines Interfaces zu umgehen, wäre ich dennoch an der Lösung interessiert.
 

musiKk

Top Contributor
Ich finde Deine Lösung eigentlich schöner. toString() ist einfach nur eine textuelle Darstellung einer Instanz eines Objekts ohne besondere Anforderungen. Sie soll von Menschen lesbar sein und es wird "empfohlen", die Methode zu überschreiben. Mitten in der Klassenhierarchie aber auf einmal diese Anforderung zu ändern, sorgt nicht gerade für Übersichtlichkeit. Streng genommen verstößt das auch gegen das Substitutionsprinzip. Wäre hier im konkreten Fall wahrscheinlich nicht so schlimm, aber alles andere als schön.
 

sliwalker

Top Contributor
Auch nicht schöner, aber Du könntest die Signatur im Interface ändern, dass unterscheiden sich auch die Object.toString() und Deine neue toString(Object o).

Ist nur ziemlich sinnfrei einfach immer null mit zu übergeben.
Funktioniert aber...
 

Andreas29

Bekanntes Mitglied
Hi,

also, ich denke auch, dass die Idee der getName() Methode die besser ist. Denn man sollte es vermeiden, seine Business logik vom vorhandensein dieser Methode abhängig zu machen. Das ist kein guter Stil und sehr riskant.

@musiKk:
Ob nun Interface oder abstrakte Klasse, da toString() auf Obeject schon als konkrete Methode implementiert ist, brauche ich sie auf meiner Klasse nicht erneut hinschreiben, egal ob sie auf irgendeinem Interface oder einer abstrakten Klasse vorgegeben ist. Denn wenn eine Methode auf einer parent-Klasse implementiert ist, ist sie implementiert. Fertig.

Grüße,
Andreas
 

musiKk

Top Contributor
@musiKk:
Ob nun Interface oder abstrakte Klasse, da toString() auf Obeject schon als konkrete Methode implementiert ist, brauche ich sie auf meiner Klasse nicht erneut hinschreiben, egal ob sie auf irgendeinem Interface oder einer abstrakten Klasse vorgegeben ist. Denn wenn eine Methode auf einer parent-Klasse implementiert ist, ist sie implementiert. Fertig.

Nein. Glaub mir, ich habe das ausprobiert, bevor ich diese Aussage getätigt habe.
 

sliwalker

Top Contributor
ACK musiKk.

Ich konnte es auch nicht glauben und habe es probiert.
Tatsächlich meckert eclipse. Warum, das ist mir noch nicht ganz klar.
Kann das jemand erklären?
 

musiKk

Top Contributor
Nun... weil die Methode als abstrakt markiert ist. Mehr ist doch nicht dahinter?
http://java.sun.com/docs/books/jls/third_edition/html/classes.html#8.4.3.1 hat gesagt.:
Every subclass of A that is not abstract must provide an implementation for m, or a compile-time error occurs
Das Beispiel dort verwendet sogar toString().
 

sliwalker

Top Contributor
Aha,

nun ja, man könnte ja sagen, dass es die Methode schon gibt, da immer von Object abgeleitet.
Und beim interface ist es ja dasselbe. Das Interface macht keine Probleme, da erkennt der compiler, dass es die Methode gibt.

Bei abstract, wenn ich recht überlege, muss die erste non-abstract Klasse eine Implementierung bieten.
Ich hätte nun gesagt, die ist ja schon da. Aber irgendwas muss anders sein. Kann mir nur vorstellen,d ass der Compiler bei abstract explizit darauf achtet, dass in der direkten ersten non-abstract Klasse eine explizite Implementierung dieser Methode enthalten sein muss. "Abstract sucht nicht in der Vererbungshirachie".

Was anderes fällt mir nicht ein.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
I No Jakarta Enterprise Beans found with interface ignorieren? Java Basics - Anfänger-Themen 2
I No EJB found with interface of type Java Basics - Anfänger-Themen 12
wolei Java generic interface in a generic class Java Basics - Anfänger-Themen 6
Say Abstrakt oder Interface Java Basics - Anfänger-Themen 3
Say public/default Interface Java Basics - Anfänger-Themen 9
D Interface Methode wird ungewollt in der Subklasse überschrieben Java Basics - Anfänger-Themen 5
W Intuitive interface für Komponenten Java Basics - Anfänger-Themen 4
I Browser integriert in Desktop Applikation - Webcam interface not found Java Basics - Anfänger-Themen 26
U Beispiel Methode size() vom "Collection"-interface... Wie kann man sichtbar machen, was die Methode unter der Haube macht? Java Basics - Anfänger-Themen 8
J Interface Comparable<T> Java Basics - Anfänger-Themen 10
M Interface oder Vererbung? Java Basics - Anfänger-Themen 12
D Interface Verständisfrage Java Basics - Anfänger-Themen 8
U Interface | constructor injection Java Basics - Anfänger-Themen 5
J Interface Interface korrekt implementieren Java Basics - Anfänger-Themen 5
A Methoden Vererbung und Interface Java Basics - Anfänger-Themen 14
T Interface Map und Map.Entry Java Basics - Anfänger-Themen 4
U Interface als PAramter (Vergleich) und ein Error Java Basics - Anfänger-Themen 9
I Interface von einer EJB Klasse, um Code zu reduzieren Java Basics - Anfänger-Themen 1
M Interface als Parameter einer Klasse Java Basics - Anfänger-Themen 8
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
I JSON und Interface Java Basics - Anfänger-Themen 3
Kotelettklopfer Kleines Testprogramm mit Interface und einer Usereingabe Java Basics - Anfänger-Themen 16
J Interface methode aufrufen (interface parameter) Java Basics - Anfänger-Themen 7
CptK Interface Functional interface mit mehreren Methoden Java Basics - Anfänger-Themen 6
L Interface & Comparable Java Basics - Anfänger-Themen 15
T Interface Java Basics - Anfänger-Themen 0
CptK Generics: Klassen die Interface implementieren, aber selbst nicht das Interface sind Java Basics - Anfänger-Themen 8
B Interface List - Objekt übergeben? Einzelnes Objekt geht, aber Liste nicht? Java Basics - Anfänger-Themen 4
B Best Practice Unschlüssig ob Vererbung oder Interface Java Basics - Anfänger-Themen 2
E abstrakte Klasse implementiert ein Interface Java Basics - Anfänger-Themen 40
C Interface und Konstruktor Java Basics - Anfänger-Themen 1
S Interface Equals und hashCode Java Basics - Anfänger-Themen 16
A Generische Klassen/Interface Java Basics - Anfänger-Themen 1
C Methoden-Parameter ist Interface Java Basics - Anfänger-Themen 5
B Collections Objektreferenz-ID in der Ausgabe (Comparator Interface) Java Basics - Anfänger-Themen 2
A Interface Kuddelmuddel Java Basics - Anfänger-Themen 4
C Collections List über Interface zugreifen Java Basics - Anfänger-Themen 32
S Interface Interface und seine Implementierung Java Basics - Anfänger-Themen 5
H abstract und interface Java Basics - Anfänger-Themen 4
F Interface Casting Java Basics - Anfänger-Themen 13
C Telefonliste mit interface implementieren Java Basics - Anfänger-Themen 30
L Klassen Kann eine Unterklasse einer abstrakten Klasse ein Interface implementieren? Java Basics - Anfänger-Themen 2
H Interface Java Basics - Anfänger-Themen 2
R Quicksort mit Interface Comparable Java Basics - Anfänger-Themen 6
T Interface Methode im Interface mit mehreren Parametern Java Basics - Anfänger-Themen 10
B Interface vs Abstract Java Basics - Anfänger-Themen 2
B Objekte zählen/ Vererbung/ Kopplung/ Interface/ Abstract Class Java Basics - Anfänger-Themen 5
pkm Interface Funktionales Interface lässt sich nicht implementieren. Java Basics - Anfänger-Themen 2
Kornblume Comparable Interface für Objektvergleiche nutzen Java Basics - Anfänger-Themen 15
I Comparator<T> Interface als Methodenparamter Java Basics - Anfänger-Themen 4
J OOP Wie sollte ich das organisieren (Abstract? Interface?) Java Basics - Anfänger-Themen 33
J Java Interface/abstrakte Klassen Java Basics - Anfänger-Themen 2
E Interface nur von abstrakter Klasse implementierbar?! Java Basics - Anfänger-Themen 1
J Vererbung Abstrake Klasse <-> Interface Java Basics - Anfänger-Themen 5
C Interface als Datentyp eines Attributes? Java Basics - Anfänger-Themen 6
U Interface Bedeutung "Code to an interface rather than to an implementation." Java Basics - Anfänger-Themen 4
M Erste Schritte Prüfungsbeispiel: Interface / abstrakte Klassen Java Basics - Anfänger-Themen 8
M Maven Main-Methode Interface und Klasse Java Basics - Anfänger-Themen 2
R Interface Eigene Objekte in Listen sortieren mit Interface Comparable Java Basics - Anfänger-Themen 5
D Interface Amazon Skill Kit, Interface but method in other class? Java Basics - Anfänger-Themen 3
A Interface Abstrakte Interface Methode kann nicht benutzt werden Java Basics - Anfänger-Themen 10
J Compiler-Fehler class interface or enum expected Java Basics - Anfänger-Themen 1
T Vererbung und interface. Java Basics - Anfänger-Themen 1
N Interface Interface Erstellung Java Basics - Anfänger-Themen 3
kilopack15 Beziehung Interface - (abstrakte) Klasse -Unterklasse Java Basics - Anfänger-Themen 3
C Interface Fragen zum Interface Java Basics - Anfänger-Themen 7
Azazel Ist die abstract class das selbe wie ein interface ? Java Basics - Anfänger-Themen 33
K Interface: wie damit arbeiten Java Basics - Anfänger-Themen 4
lBlKha0s Fehlermeldung : class interface or enum expected Java Basics - Anfänger-Themen 9
T error: class, interface, or enum expected Java Basics - Anfänger-Themen 5
T Vererbung Interface Java Basics - Anfänger-Themen 5
F Interface aus anderem Package nutzen Java Basics - Anfänger-Themen 10
N Interface Daten einem Implementierten Interface zuweisen Java Basics - Anfänger-Themen 37
B Erste Schritte Wie definiere ich in Java ein Interface? Java Basics - Anfänger-Themen 6
L OOP Interface Prinzip? Java Basics - Anfänger-Themen 6
K Nutzung einer Klasse die das Iterator-Interface implementiert Java Basics - Anfänger-Themen 0
K Iterator-Interface implementieren mit Exception Handlung Java Basics - Anfänger-Themen 1
J Innerhalb Interfacemethode: Interface als Attribut Java Basics - Anfänger-Themen 2
A Frage zu Interface Java Basics - Anfänger-Themen 16
J Interface Java Basics - Anfänger-Themen 3
W Interface Java Basics - Anfänger-Themen 1
L Compiler-Fehler error: class, interface or enum expected Java Basics - Anfänger-Themen 2
G Interface java.util.Comparator: Wieso muss nur die Methode compare() implementiert werden Java Basics - Anfänger-Themen 2
N Generics Vererbung Wildcard Interface Java Basics - Anfänger-Themen 8
Shams Kann man von einem Interface aus auf die dieses implementierende Klasse zugreifen? Java Basics - Anfänger-Themen 4
S Generische Methode soll Objekte als Parameter erlauben die bestimmtes Interface implementieren^ Java Basics - Anfänger-Themen 9
J Frage zu dem Thema interface Java Basics - Anfänger-Themen 5
S Generics und Comparable Interface Java Basics - Anfänger-Themen 5
A Klasse,Vererbung,Interface,Singleton,Thread Java Basics - Anfänger-Themen 5
S Interface-Methode abrufen? Java Basics - Anfänger-Themen 2
G Vererbung Klasse erbt von abstrakter Klasse implementiert Interface Java Basics - Anfänger-Themen 2
M Konstanten in einem Interface definieren Java Basics - Anfänger-Themen 1
P interface Java Basics - Anfänger-Themen 1
F eigenes Listener Pattern mit Interface Java Basics - Anfänger-Themen 1
M Interface als Datentyp Java Basics - Anfänger-Themen 12
K Interface Methoden überschreiben Java Basics - Anfänger-Themen 1
C Klassendesign / Wann Interface implementieren und wann Klassen vererben? Java Basics - Anfänger-Themen 3
A Interface in Collection (Liste) angeben Java Basics - Anfänger-Themen 2
G Interface klasse Java Basics - Anfänger-Themen 4
N Interface Interface (sinnvoll) erzeugen Java Basics - Anfänger-Themen 8

Ähnliche Java Themen


Oben