Nutzen von Schnittstellen

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hi,

was für einen Nutzen hat eine Schnittstelle? Was bringt mir das für die Programmierung. Wenn ich weiß, eine Klasse implementiert die Schnittstelle, dann muss sie bestimmte Methoden "ausprogrammieren".

Kann mir aber kein praktisches Bsp. vorstellen, wo solches Wissen etwas nützt. Ich werde sozusagen gezwungen bestimmte Sachen zu implementieren. Hat jemand ein einfaches Bsp. wo mir eine Schnittstelle im Java-Programm was nützt?
 

The_S

Top Contributor
Schnittstelle = Interface?

z. B. der ActionListener. Wie willst du sonst mitbekommen, dass jemand einen Button betätigt hat?
 
G

Gast

Gast
zb. bei Datenbanken;
Code:
DatenbankenInterface dbi = new DatenbankdieInterfaceimplementiert();

und dann später

dbi.tueetwas();
 
G

Guest

Gast
Gast hat gesagt.:
zb. bei Datenbanken;
Code:
DatenbankenInterface dbi = new DatenbankdieInterfaceimplementiert();

und dann später

dbi.tueetwas();

sorry hab noch vergessen, wenn du jetzt zb. ne andere Datenbank nutzen wolltest müßtest du nun nur die eine Zeile ändern in:

DatenbankenInterface dbi = new AndereDatenbankdieInterfaceimplementiert();
 
G

Guest

Gast
Threadstarter.

Hab mir das mal durchgelesen und trotzdem nicht kapiert. Was bringt mir z.B. das Interface Collection. Alle die das Interface einbinden müssen z.B. add(Objekt) implementieren.

Könnte mir aber jederzeit ein add(Objekt) auch so programmieren. Das am Ende auch den selben Syntax hat. Jeder sieht doch, das meine Klasse auch eine add-Methode besitzt die das selbe macht wie das add was beschrieben wird in Collection...


Hab schon verschiedene Tutorials gelesen, aber eine richtige, einleuchtende Motivation für die Interfaces habe ich noch nicht gefunden...
 

Wildcard

Top Contributor
Anonymous hat gesagt.:
Hab schon verschiedene Tutorials gelesen, aber eine richtige, einleuchtende Motivation für die Interfaces habe ich noch nicht gefunden...
Einsicht kommt mit der nächsten Evolutionsstufe deines Programmierer-Seins.
Wenn dir der gepostete Thread nicht ausreicht mangelt es dir an Erfahrung.
 

The_S

Top Contributor
Anonymous hat gesagt.:
Threadstarter.

Hab mir das mal durchgelesen und trotzdem nicht kapiert. Was bringt mir z.B. das Interface Collection. Alle die das Interface einbinden müssen z.B. add(Objekt) implementieren.

Könnte mir aber jederzeit ein add(Objekt) auch so programmieren. Das am Ende auch den selben Syntax hat. Jeder sieht doch, das meine Klasse auch eine add-Methode besitzt die das selbe macht wie das add was beschrieben wird in Collection...


Hab schon verschiedene Tutorials gelesen, aber eine richtige, einleuchtende Motivation für die Interfaces habe ich noch nicht gefunden...

Angenommen du hast mehrere unterschiedliche Klassen als Objects vorliegen, von denen du auf die Methode "add" Zugreifen möchtest. Du könntest jetzt jedes einzelne Object mit instanceof überprüfen, um welche Klasse es sich handelt, diese dann casten und anschließend auf die Methode "add" zugreifen. Implementieren aber alle Klassen das interface "Collection", so kannst du einfach alle in eine Collection casten und anschließend auf die Methode "add" zugreifen.
 
G

Gast

Gast
wenn du ein Programm schreibst, das die möglichkeit bieten soll verschiedene Datenbanken nutzen zu können, dann hast du mit unter mehrere verschiedene Datenbankklassen. Lässt du diese nun ein Datenbankinterface implementieren, so brauchst du in deinem Hauptprogramm nicht eine bestimmte Datenbank nutzen, sondern du castest das ganze in dein Interface und benutzt dieses.

Das geht natürlich auch auf anderen Wegen, ganz klar.

Aber auf diese Art, kann ich z.B. problemlos einem Konstuktor die jeweilige Klasse mitgeben die er nun nutzen soll und das ohne an meinem Hauptprogramm nur ein zeichen zu ändern.

Code:
public class Hauptprogramm{
DBInterface dbi;
public Hauptprogramm(DBInterface dbi){
this.dbi=dbi;
}
public void doSomething(){
dbi.doSomething();
}
}
[\code]

Code:
und das ganze kann ich dann so aufrufen
[code]
Hauptprogramm hp = new Hauptprogramm(new EineSpezielleDatenbankImplementierung());
[\code]
 
S

SlaterB

Gast
wenn du eine konkrete Klasse vorliegen hast, dann ist alles gut, dann sind Interface wenig hilfreich,

aber was ist wenn du eine allgemeine Operation wie Collections.sort() hast,
die verschiedene Listen-Klassen sortieren soll,
z.B. ArrayList und LinkedList

da ist es toll, dass ein gemeinsames Interface da ist
und man nicht entweder
1. eine Operation für jede Klasse braucht
oder
2. für jeden einzelnen Operationsaufruf nach der Art der Klasse unterscheiden muss

verwendet man nur das Interface (List), so sind alle Klassen gleich und können einheitlich behandelt werden,
eine Oberklasse bei theoretischer Mehrfachvererbung
 
G

Gast

Gast
@slater

Ich brauch doch trotzdem noch ne Operation für jede Klasse. Das sort was im Interface nur abstrakt beschrieben wird, muss ja trotzdem noch implementiert werden. Verstehe ich nicht ganz.
 

AlArenal

Top Contributor
Um die Methode zu benutzen ist es aber irrelevant, ob die das Interface implementierende Klasse Humsdibums oder Haumichblau ist. Genauso wie das mauelle Schalten in jedem Wagen mit Kupplung gleich funktioniert, egal um welches Modell welches Herstellers es sich handelt.

Das Interface gibt ein Verhalten vor, auf dessen korrekte Arbeitsweise ich mich verlassen kann. Habe ich nun, um bei dem Beispiel der Sortierung zu bleiben, einen Arsch voll Listen die ich sortieren muss, ist völlig egal ob zu dem Zeiptunkt da ich meine Methode stricke, ich die Zielklasse kenne. Ich verlasse mich aufs Interface und fahre damit immer richtig. Vielleicht nutzt einer mal meinen Code um irgendwas zu sortieren, was er selbst geschrieben hat? Dann ist mein Code wertlos, wenn ich ihn auf konkrete Klassen hin geschrieben habe...
 
S

SlaterB

Gast
> Ich brauch doch trotzdem noch ne Operation für jede Klasse.
> Das sort was im Interface nur abstrakt beschrieben wird, muss
> ja trotzdem noch implementiert werden. Verstehe ich nicht ganz.

ne, das sort ist fest implementiert (statische Operation Collections.sort)

es geht darum, dass diese EINE sort-Operation mit ALLEN Arten von Listen arbeitet,
weil sie nur mit dem Interface arbeitet,

das Interface beschreibt das zu sortierende Objekt (ganz allgemein eine Liste mit get/set)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Klassen Instanzen einer Klasse in einer anderen unabhängigen Klasse nutzen Java Basics - Anfänger-Themen 4
I Objekte in ShareProject speichern um später zu nutzen Java Basics - Anfänger-Themen 4
I Gleiche Klassen und Methoden in unterschiedlichen Projekten nutzen Java Basics - Anfänger-Themen 2
berserkerdq2 Wozu benötigt man den BiPredicate, kann ich nicht einfach eine normale Methode nutzen, statt BiPredicate? Java Basics - Anfänger-Themen 3
berserkerdq2 Warum soll ich shuffle nutzen, um bei Rückgabewert Collection eine Liste zurückzugeben? Java Basics - Anfänger-Themen 3
L Methoden in anderen Klassen nutzen Java Basics - Anfänger-Themen 6
A Ein Array bearbeiten und in einer anderen Methode nutzen Java Basics - Anfänger-Themen 6
jamboy7 Java-API kennenlernen, verstehen und nutzen lernen Java Basics - Anfänger-Themen 4
K Zweimal dieselbe Methode als Übergabeparameter nutzen Java Basics - Anfänger-Themen 1
low_in_the_head Eigene Exception nutzen Java Basics - Anfänger-Themen 4
T Mathe Bibliotheksfunktionen nutzen bei Geany Java Basics - Anfänger-Themen 1
B Jsoup: gleiche Session nutzen Java Basics - Anfänger-Themen 0
G Scanner nutzen und Index auslesen Java Basics - Anfänger-Themen 8
I Greedy Methode Methoden nutzen Java Basics - Anfänger-Themen 3
I Klassen als Datentyp nutzen? Java Basics - Anfänger-Themen 11
J Button als Feld nutzen Java Basics - Anfänger-Themen 17
CptK Interface 2 von einander unabhängige Frames mit Panel gleichzeitig nutzen Java Basics - Anfänger-Themen 66
I System.currentTimeMillis() nutzen Java Basics - Anfänger-Themen 2
K FYI: Reguläre Ausdrücke nutzen ja/nein Java Basics - Anfänger-Themen 2
M Welches Framework für kleine WebApp nutzen? Java Basics - Anfänger-Themen 6
M WebApp in Azure - Welse Tools nutzen? Java Basics - Anfänger-Themen 2
I Java updatebar? Oder lieber C# nutzen? Java Basics - Anfänger-Themen 9
J Polymorphie und Dynamisches Binden richtig nutzen Java Basics - Anfänger-Themen 11
L Variable aus einer Klasse in einer anderen Klasse nutzen Java Basics - Anfänger-Themen 6
S Abstrakte Methode nutzen Java Basics - Anfänger-Themen 9
Kornblume Comparable Interface für Objektvergleiche nutzen Java Basics - Anfänger-Themen 15
deatzi Variable aus If Abfrage später nutzen Java Basics - Anfänger-Themen 4
L Variablen in anderen Klassen nutzen Java Basics - Anfänger-Themen 6
B Methoden Nutzen der Instanzvariablen in Klassenmethoden Java Basics - Anfänger-Themen 1
S Vererbung Variablen klassenübergreifend nutzen Java Basics - Anfänger-Themen 42
B Variable in mehreren Klassen nutzen Java Basics - Anfänger-Themen 4
A Kann man ein Attribut aus einer anderen Klasse nutzen? Java Basics - Anfänger-Themen 3
O Datentypen Volle 16 Bit eines Short für flags Abfrage nutzen Java Basics - Anfänger-Themen 11
L Java 1.6 ohne sicherheitsmedung nutzen Java Basics - Anfänger-Themen 4
U Array werte speichern und für berechnungen nutzen Java Basics - Anfänger-Themen 4
J Wie lässt sich der Konstruktor einer Klasse einer Funktion einer Klasse nutzen. Java Basics - Anfänger-Themen 4
P Verschiedene Java Versionen nutzen Java Basics - Anfänger-Themen 6
F Interface aus anderem Package nutzen Java Basics - Anfänger-Themen 10
S Input/Output JS Source code in Java nutzen Java Basics - Anfänger-Themen 1
M Pc Leistung zu 100% nutzen Java Basics - Anfänger-Themen 4
N Variablen Variable in Main deklarieren und in anderer Methode nutzen Java Basics - Anfänger-Themen 12
G Was ist der Nutzen von generischen Konstruktoren? Java Basics - Anfänger-Themen 4
O Innere Klassen nutzen? Java Basics - Anfänger-Themen 4
S Umgebungsvariable Wert einer Variable global nutzen Java Basics - Anfänger-Themen 3
D OOP Nutzen von Accesors? Java Basics - Anfänger-Themen 13
T unterklasse will eine methode von der oberklasse nutzen Java Basics - Anfänger-Themen 4
D Name einer Variable als String nutzen Java Basics - Anfänger-Themen 13
K Vererbung Variable aus anderer Klasse nutzen Java Basics - Anfänger-Themen 3
A .jar unter Linux nutzen Java Basics - Anfänger-Themen 2
K Ein zentrales Objekt in vielen anderen Klassen nutzen? Java Basics - Anfänger-Themen 22
DStrohma Best Practice Hibernate für kleine Anwendung nutzen? Java Basics - Anfänger-Themen 4
B methoden aus einer anderen klasse nutzen Java Basics - Anfänger-Themen 3
B Kann man Windowbuilder auch mit Juno (also Eclipse 4.2) nutzen? Java Basics - Anfänger-Themen 1
J Sinn/Nutzen von Scanner Java Basics - Anfänger-Themen 23
C Printf nutzen Java Basics - Anfänger-Themen 10
C Printf nutzen Java Basics - Anfänger-Themen 6
Anfänger2011 selber geschriebene Programme nutzen Java Basics - Anfänger-Themen 11
K Verschiedene JDK´s paralell nutzen? Java Basics - Anfänger-Themen 3
M Interface als Konstruktorparameter nutzen, um Funktion zu plotten Java Basics - Anfänger-Themen 14
B lokales JRE bei Applets nutzen ? Java Basics - Anfänger-Themen 4
L Variable einer ListenerKlasse nutzen Java Basics - Anfänger-Themen 3
X Muss man Java können um Jython nutzen zu können? Java Basics - Anfänger-Themen 14
A Variablen Variable aus if in main nutzen Java Basics - Anfänger-Themen 14
V Ressourcen aus Ordner nutzen Java Basics - Anfänger-Themen 5
E JNI Registry in Executable Jar Datei nutzen? Java Basics - Anfänger-Themen 6
I Konstruktor in anderer Klasse nutzen Java Basics - Anfänger-Themen 11
T csv einlesen, nutzen einer direkten speicherort eingabe Java Basics - Anfänger-Themen 2
R Verschiedene Jar Versionen nutzen Java Basics - Anfänger-Themen 14
P Methoden Daten aus Methode weiter nutzen Java Basics - Anfänger-Themen 14
P Variablen Variable in if Bedingung anlegen, Wert zuweisen und diesen als Bedingung nutzen Java Basics - Anfänger-Themen 4
J 2d Koordinaten in Array richtig nutzen Java Basics - Anfänger-Themen 2
P WAV-Datei in Eclipse nutzen und in .jar exportieren Java Basics - Anfänger-Themen 5
W welches Paket für welches Aufgabe nutzen Java Basics - Anfänger-Themen 3
D Teile eines Time-Strings nutzen Java Basics - Anfänger-Themen 8
Binary.Coder Wie linkedlist für Djikstra nutzen? Java Basics - Anfänger-Themen 6
F Color Map .map-Datei nutzen Java Basics - Anfänger-Themen 4
N Variablen Variable nach Schleife nutzen Java Basics - Anfänger-Themen 5
E Clonable-Interface für Backups nutzen Java Basics - Anfänger-Themen 2
Bastie Compiler-Fehler Fremde .class nutzen? Java Basics - Anfänger-Themen 12
W Datentypen Operatoren für eigenen Datentyp nutzen Java Basics - Anfänger-Themen 2
M Mehrere Threads nutzen --> run() schneller als start(), Warum? Java Basics - Anfänger-Themen 3
E JButton klassenübergreifend nutzen? Java Basics - Anfänger-Themen 6
B Snowball Stemmer Bibliothek nutzen Java Basics - Anfänger-Themen 8
D Selbstprogrammierte Datein in Netbeans nutzen? Java Basics - Anfänger-Themen 2
Burny91 FileReader und Writer gleichzeitg nutzen Java Basics - Anfänger-Themen 2
E Programm auch auserhalb von Eclipse nutzen? Java Basics - Anfänger-Themen 3
Developer_X String[]args nutzen, wie? Java Basics - Anfänger-Themen 7
S Klassenbibliotheken nutzen und finden? Java Basics - Anfänger-Themen 6
M LinkedList in anderer Klasse nutzen Java Basics - Anfänger-Themen 4
B Variable einer Klasse in einer anderen Klasse nutzen Java Basics - Anfänger-Themen 14
B Eine neue Klasse in anderen Projekten nutzen Java Basics - Anfänger-Themen 5
H Maps? Wozu? Nutzen? Java Basics - Anfänger-Themen 3
B TR programmiert nun will ich es im PC nutzen Java Basics - Anfänger-Themen 2
C Von einer Klasse auf die nächste Zugreifen und die Methode nutzen? Java Basics - Anfänger-Themen 5
R Variablen Klassenübergreifend nutzen Java Basics - Anfänger-Themen 18
Antoras eine Instanz von mehrere Klassen aus nutzen Java Basics - Anfänger-Themen 2
B Datei aus Jar-Datei richtig nutzen Java Basics - Anfänger-Themen 4
Daniel_L Geschweifte Klammern nutzen oder nicht? Java Basics - Anfänger-Themen 3
D Integer aus Nebenklasse in Hauptklasse nutzen Java Basics - Anfänger-Themen 8
B Wie kann ich eigene Pakete nutzen? Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben