Interface Wie funktioniert das mit den Interfaces. Ich verstehe es einfach nicht! :(

J

JavaRookie98

Gast
Hier zum Beispiel,

SocketAddress addr = new InetSocketAddress( host, port );
Warum nicht so:SocketAddress addr = new SocketAddress( host, port );

Ich habe das mit den Interfaces auch mehrmals durchgelesen, aber ich blicks einfach nicht.
Ein Interface ist eine Klasse die nur Methodenköpfe hat
und die Methoden müssen wenn dieses Interface implementiert wird,
geschrieben werden. Das ist für Klassen die einen Vertrag eingehen! Häh?

OK! Ich verstehe das nicht. Kann mir einer anhand eines guten Beispiels erklären, wozu es gut ist. Und vielleicht ein gutes Beispiel zur Veranschaulihung.

Danke!
 

Reality

Top Contributor
InetSocketAddress erbt von SocketAddress. Deswegen.

InetSocketAddress (Java 2 Platform SE v1.4.2)

Schau dir mal Polymorphie an.

EDIT: Deine Variante geht natürlich auch bzw. es kommt auf die Anforderungen drauf an. Wenn du es allgemeiner haben willst, dann verwendet man immer die Oberklassen (z. B. als Parameter in einer Methode).

EDIT2: Außerdem sind das doch Klassen, keine Interfaces.

L. G.
Reality
 
Zuletzt bearbeitet:
J

JavaRookie98

Gast
Hups!
InetSocketAddress ist eine Klasse richtig.
Völlig übersehen!

Aber kann mir einer anhand eines guten Beispiels zeigen wie das mit den Interfaces geht. Hab bisher nur C programmiert. Und Polymorphie kann/versteh ich.
Da hab ich zum Beispiel in einem Array verschiedene Kindklassendringehabt und die Methode dadrauf polymorph aufgerufen. Das hab ich das auch komplett falsch verstanden?
 
J

JavaRookie98

Gast
@FinalStriker. Danke, aber ich habe so viele Tutorials dazu gelesen, ich verstehe es einfach nicht, jetzt habe ich gedacht, dass mir jemand ein gutes Beispiel geben könnte.
 

turtle

Top Contributor
Nehmen wir an, ich schreibe ein Grafik-Prgramm. Darin gibt es Klassen wie Kreis, Rechteck, Quadrat oder was sonst noch. Allen gemeinsam aber ist, dass man diese "zeichnen" kann. Also lege ich über ein Interface fest, dass alle Objekte, die mein Programm später mal bearbeiten kann, gezeichnet werden können.
Also lege ich den Kontrakt fest, den ein Objekt in meinem Programm erfüllen muss, damit es verwaltet werden kann.
Java:
public interface Drawable {
	public void zeichne();
}

In meinem Grafik-Programm gibt es dann Drawable-Objekte:
Java:
class Kreis implements Drawable...
class Rechteck implements Drawable...
List<Drawable> figuren = new ArrayList<Drawable>();

public void zeichneAlles() {
			for (Drawable figur : figuren) {
				figur.zeichne();
			}
}

Alsoo braucht mein Programm gar nicht zu wissen um welche Figur (Kreis,Dreieck,..) es sich handelt. Das Programm weiss aber, dass es die Methode zeichne() aufrufen kann, weil das der Kontrakt festlegt.

Damit können sogar spätere Figuren eingebaut werden, OHNE das Grafikprogramm massiv zu ändern. Denn eine neue Figur muss "nur" das Interface implementieren.

Ich hoffe, damit wirds etwas übersichtlicher.
 
Zuletzt bearbeitet:
J

JavaRookie98

Gast
Ich lese mir grad die Links und den Beitrag von turtle durch und muss sagen langsam wird alles ein wenig klarer :)! Danke!

Aber Polymorphie klappt doch auch ohne Interfaces oder?

Array[Fahrzeuge].fahren();

Fahrzeuge können sein Motorräder, Autos usw. die fahren alle anders aber erst zur Laufzeit weiss das Programm um welches Fahrzeug es sich handelt. Dazu muss fahren halt in den Kindklassen überschrieben werden. Korriegiert mich bitte wenn ich hier etwas Falsches geschrieben habe!
 
J

JavaRookie98

Gast
OK! Wow jetzt ist es auf einmal klar. :) YUPPIE mit den Buyable und Drawable Interfaces. Verstehe ich es! Super. Gibt es noch andere Bereiche in denen ich Interfaces nutzen kann . Also ausser bei der Polymorphie!

PS: Jetzt weiss ich auch warum es eine Schnittstelle darstellen soll. Ich bin so ein Idiot :).
 

turtle

Top Contributor
Aber Polymorphie klappt doch auch ohne Interfaces oder?

Ja, aber..

Ein grosser Vorteil von Interfaces ist auch, das man nicht an eine Klassenhierarchie gebunden ist. Daher kann man ein "Verhalten", definiert durch ein Interface, in eine beliebige Klasse "einmixen".

Also
class A extends B implements Drawable...

geht dann und man muss nicht die ganze Klassenstruktur über den Haufen werfen. Daher werden manchmal Interfaces in Java in Zusammenhang mit Mehrfachvererbung gebracht, obwohl es die ja in Java nicht gibt. Aber so erbt A im Beispiel die Methoden von B plus muss noch die Interface-Methoden implementieren.

Ich bin ja Fan der Programmierung gegen Interfaces. Diese sind nämlich besonders beim Entwurf von Systemen hilfreich, weil das Systemverhalten vollständig über Interface definiert werden kann.

Wie im Beispiel Grafikprogramm musst Du nur wissen, das es das Interface Drawable gibt und vielleicht noch das Interface OutputDefinition, dann kann die Methode zeichne auf den Parameter OutputDefinition zugreifen und so erfahren auf welchem Ausgabegerät gezeichnet werden soll. Dabei hast Du noch überhaupt keine realen Implementierungen eingebracht. Erst später gibt es dann zum Test vielleciht einen Kreis (Drawable) und einen Screen (Outputdefinition). Aber Du kannst Dein Programm schon schreiben, weil Du definiert hast, welches Verhalten Du von den anderen Objekten erwartest.
 
J

JavaRookie98

Gast
Gibt es noch andere Bereiche in denen ich Interfaces nutzen kann . Also ausser bei der Polymorphie!
Und jetzt stellt sich mir die Frage. Wozu sind abstrakte Klassen mit abstrakten Methoden gut.
Weil die kann man genausowenig instanzieren wie Interfaces. Ich könnte doch dann komplett OHNE abstrake Klassen auskommen, oder?
 

TheDarkRose

Gesperrter Benutzer
Abstrakte Klassen werden erstellt, wenn diese einige Methoden beinhaltet, die für jede Kindsklasse gleich sein sollten. Die restlichen Methoden sind dann abstrakt, damit diese von der Kindsklasse implementiert werden müssen, wie bei Interfaces.
 

turtle

Top Contributor
Ich könnte doch dann komplett OHNE abstrake Klassen auskommen, oder?

Na ja, kommt drauf an.

Vorteil bei abstrakten Klassen ist natürlich, dass Du eine Implementierung vorgeben kannst, die dann greift, wenn Du die Methode nicht überschrieben hast. Bei Interfaces kannst Du halt nur die Methoden-Signatur vorgeben, aber jede Klasse muss die Methode komplett selbst implementieren.
 
J

JavaRookie98

Gast
Danke euch! Hab alle Openbooks usw. gelesen. Nur Bahnhof verstanden und dank euch blick ich jetzt durch :).
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Interfaces - Ausgabe von Set funktioniert nicht! Java Basics - Anfänger-Themen 22
J Datenüberwachung funktioniert nicht Java Basics - Anfänger-Themen 9
mo13 JTextField funktioniert nicht Java Basics - Anfänger-Themen 4
J .jar datei öffnen funktioniert nicht Java Basics - Anfänger-Themen 17
G Mit jPackage erstellte EXE funktioniert nicht Java Basics - Anfänger-Themen 2
G Robot funktioniert nicht bei SelectionListener Java Basics - Anfänger-Themen 6
R RegEx funktioniert nicht Java Basics - Anfänger-Themen 14
S 2 Reihen ratio-btn, eine Reihe funktioniert andere nicht Java Basics - Anfänger-Themen 4
monsterherz Punkt Notation funktioniert nicht Java Basics - Anfänger-Themen 4
N Programm Funktioniert mit .txt Datei aber nicht mit .rtf Datei Java Basics - Anfänger-Themen 2
D Quellcode für cmd funktioniert nicht Java Basics - Anfänger-Themen 9
ms_cikar Bin to Float convertieren funktioniert nicht Java Basics - Anfänger-Themen 24
B Schrankensystem mit Farberkennung für Flashgame funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
I Greenscreen, funktioniert nicht zu 100%... nicht alle Pixel werden geändert Java Basics - Anfänger-Themen 1
JordenJost char variable funktioniert irgendwie nicht a+b ergibt nicht à Java Basics - Anfänger-Themen 4
M Operatoren Strings mit Vergleichsoperatoren, funktioniert das? Java Basics - Anfänger-Themen 9
Garrit1994 Continue funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
B Methoden Übergebe Variabel funktioniert nicht Java Basics - Anfänger-Themen 17
P exportiertes Programm funktioniert nur teilweise Java Basics - Anfänger-Themen 7
Agent4nobody Programmstart durch aufruf des interpreters funktioniert nicht Java Basics - Anfänger-Themen 14
Fugover Programm funktioniert nicht Java Basics - Anfänger-Themen 11
X Datentypen String.equals funktioniert nicht Java Basics - Anfänger-Themen 5
berserkerdq2 wie funktioniert contenthandler, was muss ich bei der Methode startElement und endElement tun? Java Basics - Anfänger-Themen 11
Alen123 Warum funktioniert mein Code nicht? Java Basics - Anfänger-Themen 64
sserio Array funktioniert nicht Java Basics - Anfänger-Themen 2
sserio Wieso funktioniert mein Programm nicht Java Basics - Anfänger-Themen 2
A String split funktioniert nicht, wenn mehr als 1 Ziffer vor dem Zeichen steht nach dem er trennen soll? Java Basics - Anfänger-Themen 4
sserio Größtes Palindrom-Produkt Programm funktioniert nur halb Java Basics - Anfänger-Themen 23
sserio Rekursion größten Primfaktor finden funktioniert nicht Java Basics - Anfänger-Themen 8
sserio Wieso funktioniert mein TableView nicht /JavaFX. Java Basics - Anfänger-Themen 4
Avalon Warum funktioniert eine Bedingung und eine andere nicht? Java Basics - Anfänger-Themen 2
J Datentypen String in File konvertieren funktioniert nicht Java Basics - Anfänger-Themen 4
U Wie genau funktioniert der ! Operator Java Basics - Anfänger-Themen 3
stormyark 4 Bit in einer for-schleife funktioniert nicht Java Basics - Anfänger-Themen 3
J Nach dem Exportieren funktioniert mein Programm nicht mehr Java Basics - Anfänger-Themen 8
M Java printf(Locale.... funktioniert nicht Java Basics - Anfänger-Themen 3
N Wieso funktioniert die Deklaration nicht Java Basics - Anfänger-Themen 3
C Long value an Stringbuilder übergeben, equals Methode funktioniert nicht Java Basics - Anfänger-Themen 2
districon Backtracking funktioniert nicht ganz Java Basics - Anfänger-Themen 3
H Array rückwärts auslesen funktioniert nicht Java Basics - Anfänger-Themen 3
S Math.random funktioniert nicht Java Basics - Anfänger-Themen 5
S Schleife funktioniert nicht Java Basics - Anfänger-Themen 2
B Ausgabe in TextArea funktioniert nicht Java Basics - Anfänger-Themen 2
Henri Webservice Delete und Update Methode funktioniert nicht Java Basics - Anfänger-Themen 27
J ActionListener von JCheckBox im Knoten von JTree funktioniert nicht Java Basics - Anfänger-Themen 2
C System.out.println - Parameterübergabe funktioniert nicht Java Basics - Anfänger-Themen 2
JD_1998 Hilfsmethode if return funktioniert nicht Java Basics - Anfänger-Themen 2
C JButton Text 2 Mal ändern funktioniert nicht Java Basics - Anfänger-Themen 8
T % funktioniert nicht Java Basics - Anfänger-Themen 2
D e(fx)clipse installieren funktioniert nicht Java Basics - Anfänger-Themen 3
D GPIO Nutzung mit Pi4J Library auf Raspberry funktioniert nicht Java Basics - Anfänger-Themen 3
F Java GUI-PaintComponent funktioniert nicht Java Basics - Anfänger-Themen 1
J equals funktioniert nicht - Warum Java Basics - Anfänger-Themen 13
L hilfe run button funktioniert nicht Java Basics - Anfänger-Themen 13
I Array funktioniert nicht. Java Basics - Anfänger-Themen 2
T if else Befehl funktioniert nicht richtig Java Basics - Anfänger-Themen 27
V_Fynn03 Erste Schritte BubbleSort Quelltext funktioniert noch nicht Java Basics - Anfänger-Themen 1
V_Fynn03 Erste Schritte JButton funktioniert nicht trotz richtiger Methode. Java Basics - Anfänger-Themen 17
R Erste Schritte Eclipse - Java - System.out.println(); funktioniert nicht Java Basics - Anfänger-Themen 2
G Programm mit Schleife funktioniert nicht Java Basics - Anfänger-Themen 5
T Redirect funktioniert nicht Java Basics - Anfänger-Themen 3
R Mein Plugin funktioniert nicht? Java Basics - Anfänger-Themen 10
J Zufallszahl funktioniert nicht Java Basics - Anfänger-Themen 27
D Klassen add Methode funktioniert nicht. Java Basics - Anfänger-Themen 31
J ImagaIO funktioniert nicht unter Ubuntu Java Basics - Anfänger-Themen 23
F Vergleiche mit charAt funktioniert bei Strings nicht, was tun? Java Basics - Anfänger-Themen 5
N Wochentagberechner Ausgabe funktioniert nicht Java Basics - Anfänger-Themen 7
G Mein Java Projekt funktioniert nicht Java Basics - Anfänger-Themen 5
J Einlesen von Datei funktioniert nicht Java Basics - Anfänger-Themen 8
W Wieso funktioniert mein Switch Case nicht ?! Java Basics - Anfänger-Themen 9
P Zeichenkette Zeichen ausschlißen funktioniert nicht richtig Java Basics - Anfänger-Themen 9
F Primzahlsuche Schleife funktioniert nicht, HILFE! Java Basics - Anfänger-Themen 8
M Methoden Arrays.deepequals() funktioniert nicht Java Basics - Anfänger-Themen 2
B Statische Methode return funktioniert nicht. Java Basics - Anfänger-Themen 19
S JDK 9 für Windows 32 bit installiert, aber es funktioniert nix Java Basics - Anfänger-Themen 6
F Input/Output die eine txt-Datei funktioniert die andere nicht Java Basics - Anfänger-Themen 8
CptK Interface Bild über Methode ändern funktioniert nicht Java Basics - Anfänger-Themen 4
D Funktion zwei Arraylisten zu verleichen ob gleich funktioniert nicht Java Basics - Anfänger-Themen 26
A Hilfe bei Rekursion,Ich verstehe nicht,wie funktioniert die Rekursion in der Methode "walk" Java Basics - Anfänger-Themen 13
P Vererbung Warum funktioniert die Vererbung hier nicht Java Basics - Anfänger-Themen 14
P Upload Button funktioniert nicht Java Basics - Anfänger-Themen 13
S Dijkstra Algorithmus funktioniert nicht Java Basics - Anfänger-Themen 4
M Datei einlesen mit Scanner funktioniert nicht (FileNotFoundException) Java Basics - Anfänger-Themen 6
A TicTacToe funktioniert bis auf "schiefer" Sieg Java Basics - Anfänger-Themen 6
M Erste Schritte Importieren funktioniert nicht Java Basics - Anfänger-Themen 7
N Funktion funktioniert nicht immer Java Basics - Anfänger-Themen 6
F FileCreation - PrintWriter funktioniert nicht... Java Basics - Anfänger-Themen 1
I Collections.shuffle funktioniert nicht Java Basics - Anfänger-Themen 1
T Methode in Klasse funktioniert nicht Java Basics - Anfänger-Themen 14
T While Schleife funktioniert nicht Java Basics - Anfänger-Themen 14
C Warum funktioniert 'instanceof' bei generics nicht? Java Basics - Anfänger-Themen 4
M Frage, wie dieser Code funktioniert, bzw. weshab er bei mir nicht funktioniert Java Basics - Anfänger-Themen 4
L Level Reset funktioniert nicht Java Basics - Anfänger-Themen 3
A Java Scanner Funktioniert nicht Java Basics - Anfänger-Themen 2
R Kleines Java Spiel funktioniert nicht. Java Basics - Anfänger-Themen 2
W Warum funktioniert mein Programm nicht ? Java Basics - Anfänger-Themen 12
B OOP Objekt in IF erzeugen - funktioniert nicht so richtig Java Basics - Anfänger-Themen 11
W Warum funktioniert meine if Anweisung nicht? Java Basics - Anfänger-Themen 8
J Stringvergleich funktioniert nicht Java Basics - Anfänger-Themen 8
W Warum funktioniert mein Programm nicht ? Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben