Sinn von Interfaces - Wozu?

Devil_Noe

Mitglied
Hi!

Trotz aller Beiträge die ich hier und in der Literatur zu diesem Thema gelesen habe, kapiere ich peinlicherweise folgendes immer noch nicht:


Angenommen es gibt die Superklasse "Artikel", aus der sich die Subklassen "Auto" und "Buch" ableiten, die ja unterschiedlichste Eigenschaften haben könnten.

Superklasse Artikel (Die Attribute, die alle gemeinsam haben):

-int Artikelnr
-double Preis

void printArtikelInfo (gibt Artikelnr und Preis aus)

Die Subklassen (zusätzlich spezifische Attribute):

Bsp Auto hat zusätzlich:

double PS
int Türenanzahl

void printArtikelInfo (ruft die super Methode auf und gibt danach noch PS und Türenanzahl aus)

---------------

Das ist mir alles klar, auch das Überschreiben der Methode, je nachdem eben, wer ruft. Was ich aber nicht behirne:

Wenn ich möchte, daß bspw nur die Klasse Auto eine spezielle Funktion beinhalten soll, also zum Beispiel double "berechneMotorbezogeneSteuer", was würde mir da die Implementierung/Verwendung eines Interfaces bringen bzw, warum sollte ich die Methode nicht als "normale" Methode der Subklasse Auto, also genauso wie void "printArtikelInfo" schreiben? Nur, damit eine eventuelle Subklasse von Auto, also z.B. Elektroauto o.ä., diese Methode nicht vererbt bekommt (ginge das nicht auch per Modifier??)? Und: Bei "Buch" würde ich diese ja in diesem Fall gar nicht programmieren.

In beiden Fällen müsste ich den Code innerhalb von Auto schreiben, nur, daß ich im Falle eines Interfaces das Interface benötige (zusätzlich Schreibarbeit, kein Code den ich anderswo verwenden kann, nur Methodenname und values, ..) und nach dem implement gezwungen bin, die Methode auch zu implementieren (oder eben abstract).

Verstehe überhaupt nicht, was der Sinn hinter einem Interface ist.

Kann mir das irgendjemand einfachst erklären?????

:noe:

Thnx for Help!!!!!!!!
 
I

IhrBenutzername

Gast
In deinem Beispiel macht ein Interface tatsächlich keinen Sinn, tatsächlich erkennt man den Sinn von Interfaces auch eher weniger wenn man das Klassensystem von innen betrachtet so wie du, betrachte dein System mal von außen. In den vielen anderen Threads zu dem Thema wurde übrigens schon viele verschiedene Beispiele zu Interfaces gezeigt, darum werde ich jetzt hier nicht noch eins schreiben. Aber versuch mal entweder dein Beispiel von außen statt von innen zu betrachten oder eines der anderen Beispiele nachzuvollziehen, dann kannst du ja immer noch weiter fragen.

Nur, damit eine eventuelle Subklasse von Auto, also z.B. Elektroauto o.ä., diese Methode nicht vererbt bekommt (ginge das nicht auch per Modifier??)?
Interfaces und deren Methoden werden selbstverständlich auch weitervererbt, sonst wären sie ja auch mehr oder weniger witzlos.
 

Devil_Noe

Mitglied
hmmm, also ich denke, langsam dämmert es .......

sehe ich es richtig, dass ein interface eigentlich nur dann interessant ist, wenn ich bspw. aus einer dritten klasse, die kosten ermitteln soll, kosten von 2 anderen klassen ermittle und dies mittels zb einer funktion int getKosten() mache. wobei das interface sicherstellt, dass die beiden anderen klassen genau diese funktion int getKosten() (= eben eine Funktion die genauso heisst und genau einen int wert zurückgibt) vorhanden haben.

hab ich das nun richtig verstanden??
 

Landei

Top Contributor
Interfaces sind oft bestimmte "Sichtweisen" auf ein Objekt. Nehmen wir ein Auto. Zwar ist ein Auto immer ein Auto, aber je nach Zusammenhang interessieren uns ganz verschiedene Dinge daran, und das fassen Interfaces zusammen. Für eine Versicherung ist ein Auto ein Versicherungsobjekt, genauso wie ein Haus oder die Mona Lisa. Ein Versicherungsobjekt-Interface würde Besitzer, Alter, Wert usw. beinhalten. Ein Autohändler hätte wiederum ganz andere Prioritäten, und Häuser und Bilder interessieren ihn nicht die Bohne, dafür würde sein Interface vielleicht auch für andere Artikel wie Anhänger und Dachgepäckträger passen.

Was ist nun der Vorteil des Ganzen? Wenn ich einen Automobil-Konzern habe, der auch Versicherungen anbietet, kann ich eine einzige Autoklasse benutzen, die verschiedene Interfaces implementiert: Für den Versicherer sieht ein Auto wie ein Versicherungsobjekt aus, für das Werk wie ein herzustellender Artikel, für den Autohändler wie ein Verkaufsartikel und für die Bank wie ein Vermögenswert u.s.w.
 

Sekundentakt

Bekanntes Mitglied
Vielleicht mal etwas komplexer:

Stell Dir eine Klasse "Auto" vor.
Die Klasse "Auto" bindet das Interface "salableInterface" (zu deutsch: verkäuflichInterface) ein.
Die Klasse "Dummy" bindet ebenfalls dieses Interface ein - wir könnten jetzt eine Super-Klasse vom Typ "Produkt" erstellen, von der all diese Produkte erben. Aber das lassen wir hier mal außen vor.

Objekte, die das salableInterface einbinden haben eine Methode, mit der sie sich nach Instantiierung in eine Liste X eintragen können.

Nun erstellst Du ein Objekt vom Typ Autohaus, welches von der Superklasse "Store" erbt.
Dieses Autohaus greift sich die Liste der dort eingetragenen Objekte und ruft bei jedem dieser Objekte die von salableInterface vorgeschriebene Methode "addToRangeOfGoods(Store s)" auf.
Dem Autohaus kann egal sein, ob es einen Dummy, eine Tüte Gummiebären oder eine S-Klasse in der Liste X hat, alle diese Objekte beinhalten die Methode addToRangeOfGoods - und nur das zählt.

Ein Interface ist, wie der Name schon sagt, eine Schnittstelle. Man könnte auch sagen, ein Standard auf den man sich einigt.
Dieser Standard eröffnet einem die Möglichkeit zu garantieren, dass Klassen mit teilweise völlig verschiedenen Eltern bestimmte Methoden mit einer ganz bestimmten Aufgabe, weil von einem bestimmten Interface vorgeschrieben, implementieren.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Interfaces von Interfaces macht das noch Sinn? Java Basics - Anfänger-Themen 21
H Sinn von Interfaces Java Basics - Anfänger-Themen 21
C Sinn eines Interfaces? Java Basics - Anfänger-Themen 4
K Sinn von Interfaces Java Basics - Anfänger-Themen 10
F Hat es noch einen Sinn, alte Versionen zu lernen Java Basics - Anfänger-Themen 45
berserkerdq2 Wo ist der SInn, dass man den Stream, den ich zum Schreiben nutze, outputstream nenne? Java Basics - Anfänger-Themen 5
W Sinn eines Singleton ? Java Basics - Anfänger-Themen 14
R getUserProperties() macht für mich keinen Sinn Java Basics - Anfänger-Themen 8
E Sinn: final in Parameterliste verwenden Java Basics - Anfänger-Themen 2
B Sinn von Lambdas? Java Basics - Anfänger-Themen 16
5 Welchen Sinn hat ein Runnable Java Basics - Anfänger-Themen 6
P OOP Sinn von abstrakten Klassen Java Basics - Anfänger-Themen 2
M Kapselung Datenkapselung Sinn direkter Zugriff? Java Basics - Anfänger-Themen 1
B Der Sinn von Arrays Java Basics - Anfänger-Themen 2
Q Container sinn? Java Basics - Anfänger-Themen 3
S string index out of range - es ergibt keinen Sinn Java Basics - Anfänger-Themen 6
J Sinn/Nutzen von Scanner Java Basics - Anfänger-Themen 23
B Sinn von Reflections Java Basics - Anfänger-Themen 10
H Vererbung Prinzip der Ersetzbarkeit-Sinn? Java Basics - Anfänger-Themen 9
F Sinn der SuppressWarnings("unused")-Annotation Java Basics - Anfänger-Themen 5
R Sinn des programmes Java Basics - Anfänger-Themen 10
W Sinn von Konstruktorsyntax und finalize Java Basics - Anfänger-Themen 14
J Worin besteht der Sinn und Anwendungsbereich von Dreidimensionalen Arrays? Java Basics - Anfänger-Themen 11
J Datentypen Was ist der Sinn vom Datentyp "char" ? Java Basics - Anfänger-Themen 11
T Sinn von finally? Java Basics - Anfänger-Themen 3
M Variablen Zinseszinsberechnung - Variable ergibt keinen Sinn Java Basics - Anfänger-Themen 15
A Klassen Sinn des Konstruktors Java Basics - Anfänger-Themen 12
P Sinn des Security Managers Java Basics - Anfänger-Themen 2
J Welchen Sinn haben abstrakte Methoden? Java Basics - Anfänger-Themen 4
D Sinn von Jar Dateien Java Basics - Anfänger-Themen 5
K Sinn eigener Exceptions Java Basics - Anfänger-Themen 11
Luk10 Sinn von Instanzierung ohne Referenz Java Basics - Anfänger-Themen 7
hdi Sinn von RuntimeExceptions? Java Basics - Anfänger-Themen 90
Developer_X NullPointer Exception ohne Sinn Java Basics - Anfänger-Themen 19
L Sinn hinter Generic? Java Basics - Anfänger-Themen 5
M Der Java Schlüsselwort null; ?Welche Anweisung und Sinn? Java Basics - Anfänger-Themen 12
A Macht es Sinn Arraylisten mit Gettern zu übergeben? Java Basics - Anfänger-Themen 19
M Variable überwachen und Sinn eines Threads Java Basics - Anfänger-Themen 7
G Sinn vo OOP Java Basics - Anfänger-Themen 5
P Unterschied zwischen Interface und Vererbung und Sinn? Java Basics - Anfänger-Themen 5
G sinn von JList Java Basics - Anfänger-Themen 6
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
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
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

Ähnliche Java Themen

Neue Themen


Oben