Verständnisproblem bei Interfaces

Saheeda

Top Contributor
Hallo,

mir ist nicht klar, wie und wann ich Interfaces sinnvoll einsetzen sollte/müsste.

Ich weiß, dass Interfaces alle Kindklassen "zwingen", sämtliche Methoden zu implementieren, die auch im Interface stehen.
Ich weiß, dass man damit eine Kapselung erreichen kann, indem man anderen Klassen oder Benutzern gewisermaßen sagt "Von mir kriegst du X, aber wie und woher das kommt, kann dir egal sein."
Ich weiß, dass Klassen nur eine Super-Klasse, aber mehrere "Super-Interfaces" haben können.


Ansonsten ist das Thema für mich ganz dünnes Eis. Wenn in der Aufgabe nicht explizit was von Implementieren steht, käme ich nicht auf die Idee, eines zu basteln.
Auf Teufel komm raus überall Interfaces einbauen, nur um zu zeigen, dass ichs kann, ist mir auch zu doof.


Wie/woher weiß ich also, wann der Gebrauch sinnvoll ist?
 

Thallius

Top Contributor
Wenn Du es brauchst wirst du es merken, es macht ja keinen Sinn etwas zu benutzen nur weil es das gibt. Viel mehr ist einfach nur gut zu wissen, dass es sowas gibt. Dann kann man es einsetzen wenn man es braucht.

Gruss

Claus
 

derfreak

Mitglied
Also ich hatte auch Probleme damit und konnte es mir Anhand eines einfachen Beispiels erklären.
Die Grundlagen weißt du ja jetzt schon, jetzt musst du nur noch wissen wann du es einsetzten "kannst".

Sagen wir mal du hast Waffen, also Gewähre. Was tuhen die alle? Was haben die alle Gemeinsam?
Sie können schießen und man kann sie nachladen.

Sie sehen jedoch alle unterschiedlich aus.

Wenn wir jetzt aber wissen, dass all diese Waffen schießen können, warum bauen wir uns nicht einfach NUR ein INTERFACE wo man schießen kann & ein weiteres wo man nachladen kann.

Wie du sicherlich weißt, kann man nicht mehrmals Erben (extends). Jetzt kommen halt die Interfaces zum Einsatz, du könntest ja von mehreren Interfaces Erben.

Also wenn nun in der Aufgabe steht, Sie haben XYZ dann musst du überlegen, wo die Gemeinsamkeiten liegen, dann KÖNNTEST du ein Interface nehmen.

Falls ich falsch liege, so kann mich ja jemand korrigieren.
Vielen dank
 

fischefr

Aktives Mitglied
ich darf mal auch ein einfaches Beispiel bringen:

Stell dir vor, du implementierst das Interface Waffe und verschiedene Modelle als Klassen. Außerdem möchte die Bundeswehr (welche bei diesem Beispiel dein Auftraggeber ist) noch, dass du auch ihre Fahrzeuge abbildest.
Und jetzt kommst du in die blöde Situation, dass du gerade an der Klasse "Leopard" (ein Panzer der Bundeswehr) arbeitest. Wenn du jetzt mit Interfaces gearbeitet hast, dann sollte diese Klasse wohl die Interfaces "Waffe" UND "Fahrzeug" implementieren. Hättest du stattdessen mit abstrakten Basisklassen statt Interfaces gearbeitet, hättest du jetzt ein Problem: Java unterstützt keine Mehrfachvererbung. Mit Interfaces kein Problem!

Oftmals wird auch 3stufig gearbeitet:
Interface->Abstrakte Basisklasse->Implementierung
In der Regel leitet man dann von der abs. Klasse ab. Die anderen Klassen, die Objekte dieses Typs dann erwarten verwenden aber den Typ des Interfaces. Das erspart dem Implementierer das Schreiben einiger Methoden (die in der abs. Klasse bereits definiert sein können) verhindert aber an anderer Stelle wieder Probleme mit fehlender Unterstützung für Mehrfachvererbung (weil dann notfalls einfach nur das interface eingebunden werden muss)
 

Gucky

Top Contributor
Eigentlich sagt die Java Syntax es schon. "extends" bedeutet "erweitert". Also "fügt neue Funktionalitäten hinzu".

Also: Interfaces, wenn Klassen sich eine oder mehrere Methodennamen "teilen" (Stichwort: EventListener).
Vererbung: wenn Klassen wirklich eine Erweiterung der Superklasse sind (bspw. Swing zu AWT).
 

SilverClaw

Aktives Mitglied
Ich mus sagen, dass ich Interfaces auch eher selten benutze, allerdings sind die wohl auch eher in großen Projekten sinnvoll, wo man vorher im Team die grobe Funktionalität festlegt und dann ert mit Programmieren loslegt.
Ich benutze allerdings gerne "Flag-Interfaces", also solche ohne Funktionen (wobei sich dann früher oder später meist ergibt, dass man die ein oder andere hinzufügt), weil man dann z.B. (ich knüpfe mal an das meiner Vorschreiber an) ein Interface Weapon und ein Interface Vehicle erstellen und belieibg auch verschiedene Klassen verteilen kann.
Wenn man dann z.B. eine Methode für eine Person wie person.giveVehicle(Vehicle v) oder person.giveWeapon(Weapon w) hat, ergibt sich von selbst, dass man einen Golfwagen nur in ersteres, eine Steinschleuder in zweiteres und einen Kampfpanzer, sofern man diesem beide Interfaces gegeben hat, für beides verwenden kann.

Nachtrag: Praktisch ist sowas dann auch für Datenstrukturen, wnen du z.B. einen Fuhrpark als ArrayList haben willst, der Golfwagen, Panzer, Geländewagen, Bobbycars und sämtliche "Vehicle" aufnehmen soll, ohne dass du für das Interface mehr al eine Zeile Code schreiben brauchst. Man spart sich dann grausamere Lösungen wie .isVehicle(), welche ich mit der Zeit dann ansammeln und einen schönen Methoden-Salat ergeben.
 
Zuletzt bearbeitet:

Saheeda

Top Contributor
Danke, die Erklärungen und Beispiele haben mir n Stückchen weitergeholfen.
Ich werde die Beispiele mal selbst programmieren, damit ich auch ein besseres Gefühl fürs Handling bekomme.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Verständnisproblem bei Server/Client Java Basics - Anfänger-Themen 3
nonickatall Grundsätzliches Verständnisproblem des Aufbaus eines Programms Java Basics - Anfänger-Themen 19
X Verständnisproblem Call-By-Reference Java Basics - Anfänger-Themen 5
P JavaFX: Verständnisproblem bei ComboBox/ChoiceBox etc. Java Basics - Anfänger-Themen 9
T Verständnisproblem mit Assoziationen Java Basics - Anfänger-Themen 7
M Verständnisproblem der Rekursion bei Arrays Java Basics - Anfänger-Themen 8
A Erste Schritte Verständnisproblem Java Basics - Anfänger-Themen 5
S Verständnisproblem Aufgabe Java Basics - Anfänger-Themen 9
S Model View Controller: Verständnisproblem Java Basics - Anfänger-Themen 13
temi Verständnisproblem Class.forName() Java Basics - Anfänger-Themen 3
2 Verständnisproblem bei Anwendung von Lower Bounded Wildcards Java Basics - Anfänger-Themen 5
V Verständnisproblem Java Basics - Anfänger-Themen 22
L [Verständnisproblem] Array wird trotz void rückgabe verändert. Java Basics - Anfänger-Themen 5
A Verständnisproblem Ausgabe Do-While-Schleife Java Basics - Anfänger-Themen 3
J Verständnisproblem einer Methode Java Basics - Anfänger-Themen 20
M Konstruktur - Verständnisproblem Java Basics - Anfänger-Themen 4
C Postinkrement und println - Verständnisproblem Java Basics - Anfänger-Themen 8
T Verständnisproblem beim Vigenere-Verfahren Java Basics - Anfänger-Themen 2
Q MVC Verständnisproblem: Controller vs model.modelChanged() Java Basics - Anfänger-Themen 0
N Verständnisproblem InsertionSort. Java Basics - Anfänger-Themen 2
D Verständnisproblem Java Basics - Anfänger-Themen 2
B VerständnisProblem mit Beispielaufgabe aus Buch Java Basics - Anfänger-Themen 1
H Polymorphie Verständnisproblem Vererbung/Polymorphie Java Basics - Anfänger-Themen 4
FrankR2 Grundsätzliches Verständnisproblem: Java 32/64-bit; Windows 7/8, 32/64-bit-System Java Basics - Anfänger-Themen 5
V Verständnisproblem Java Basics - Anfänger-Themen 5
V Arrays-verständnisproblem Java Basics - Anfänger-Themen 4
M Collections HashSet verständnisproblem Java Basics - Anfänger-Themen 9
S Verständnisproblem einer Übungsaufgabe Java Basics - Anfänger-Themen 6
H Abstrakte Basisklasse Verständnisproblem! Java Basics - Anfänger-Themen 8
G Verständnisproblem mit swing Java Basics - Anfänger-Themen 6
F Methoden Cannot refer to a non-final variable.. verständnisproblem. Java Basics - Anfänger-Themen 7
P Verständnisproblem main Methode Java Basics - Anfänger-Themen 9
S Klassen Verständnisproblem Konstruktor Java Basics - Anfänger-Themen 7
I e.getMessage(); - Verständnisproblem Java Basics - Anfänger-Themen 6
lesni Vererbung Vererbung - Verständnisproblem Java Basics - Anfänger-Themen 2
M OOP Polymorphie/Vererbung Verständnisproblem Java Basics - Anfänger-Themen 2
J Verständnisproblem Methoden-Kettung Java Basics - Anfänger-Themen 3
A Vererbung Verständnisproblem bei Übung Java Basics - Anfänger-Themen 5
E Verständnisproblem Typkonvertierung Java Basics - Anfänger-Themen 4
S OOP Verständnisproblem Umsteiger Java Basics - Anfänger-Themen 22
C Array Verständnisproblem Java Basics - Anfänger-Themen 3
P White-Box-Test Verständnisproblem Java Basics - Anfänger-Themen 11
D : ? Operator -Verständnisproblem Java Basics - Anfänger-Themen 24
G Verständnisproblem: Exceptions Java Basics - Anfänger-Themen 17
L Eclipse verlangt "{" nach ";"... Verständnisproblem Java Basics - Anfänger-Themen 5
D charAt(i) verständnisproblem Java Basics - Anfänger-Themen 4
D Verständnisproblem Marken und Schleifen Java Basics - Anfänger-Themen 19
M Verständnisproblem bei Ternären Operanten bzw. Bedingungsoperator Java Basics - Anfänger-Themen 8
T Datentypen Verständnisproblem mit main Methode Java Basics - Anfänger-Themen 3
M Verständnisproblem Threads Java Basics - Anfänger-Themen 7
X Threads und synchronized - Verständnisproblem Java Basics - Anfänger-Themen 3
W ArrayLists: Verständnisproblem bei remove() Java Basics - Anfänger-Themen 2
B Verständnisproblem zu Swing und Methoden Java Basics - Anfänger-Themen 8
A Postinkrement-Verständnisproblem Java Basics - Anfänger-Themen 12
R Iterator Liste, Verständnisproblem Java Basics - Anfänger-Themen 4
1 Verständnisproblem mit Foreach Java Basics - Anfänger-Themen 4
B Verständnisproblem bei Vererbung Java Basics - Anfänger-Themen 3
W generisches Programmieren - Verständnisproblem Java Basics - Anfänger-Themen 4
A Verständnisproblem Nr 2 Java Basics - Anfänger-Themen 14
A Verständnisproblem Java Basics - Anfänger-Themen 6
A Array Verständnisproblem Java Basics - Anfänger-Themen 8
G Verständnisproblem --> JTree Java Basics - Anfänger-Themen 6
M Verständnisproblem mit der Klasse Thread Java Basics - Anfänger-Themen 10
N BufferedReader Verständnisproblem Java Basics - Anfänger-Themen 12
G Verständnisproblem: Code kompelieren und interpretieren Java Basics - Anfänger-Themen 3
S Polymorphie Verständnisproblem Java Basics - Anfänger-Themen 4
G Verständnisproblem Türme von Hanoi Java Basics - Anfänger-Themen 4
G Verständnisproblem Serverinput einlesen. Java Basics - Anfänger-Themen 4
J Array und Schleifen Verständnisproblem Java Basics - Anfänger-Themen 25
G Verständnisproblem Java Basics - Anfänger-Themen 4
N Verständnisproblem: Mehrere Objekte einer Klasse erstellen Java Basics - Anfänger-Themen 2
S SelectionListener + repaint().Verständnisproblem ;) Java Basics - Anfänger-Themen 7
V Verständnisproblem mit Abstrakten zu Konkreten Klassen Java Basics - Anfänger-Themen 7
A Problem mit der Stringgrösse, bzw Verständnisproblem? Java Basics - Anfänger-Themen 14
A Verständnisproblem mit ScrollPanel Java Basics - Anfänger-Themen 3
R Verständnisproblem mit Hibernate Java Basics - Anfänger-Themen 2
T Verständnisproblem mit equals() Java Basics - Anfänger-Themen 4
N datei byte für byte auslesen (verständnisproblem) Java Basics - Anfänger-Themen 2
T Verständnisproblem packages/import Java Basics - Anfänger-Themen 9
Chucky Lineare Listen Programm Verständnisproblem Java Basics - Anfänger-Themen 38
D Verständnisproblem Java Basics - Anfänger-Themen 6
S for Schleifen: Verständnisproblem Java Basics - Anfänger-Themen 15
T Vererbung von Attributen und Methoden, Verständnisproblem Java Basics - Anfänger-Themen 4
bernd while-Schleife: Verständnisproblem Java Basics - Anfänger-Themen 7
S verständnisproblem drucken Java Basics - Anfänger-Themen 11
G GridBagLayout: Verständnisproblem 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

Ähnliche Java Themen

Neue Themen


Oben