in Java mit Schnittstellen arbeiten

Status
Nicht offen für weitere Antworten.

gasiko

Mitglied
Hi,

habe massive Probleme in Java das Interface-Konzept zu verstehen. Ich meine nicht
die Einbindung eines Interfaces mit dem Schlüsselwort "implements".

Ein interface definiert eine Menge an Methodenköpfen ohne Implementierung.
Jede Klasse, die dieses Interface implementiert muss diese Methoden
ebenfalls implementieren. Das ist mir schon klar.

Vielmehr ist es die Art der Verwendung bei den gösseren Projekten. Häufig
sind fast alle Mehtoden von irgendwelchen Interface-Klassen.

Was passiert z.b hier was hat die Variable intrfc ?
was ermöglicht mir intrfc alles. Warum gibt es diese Variante
mit Interfaces zu operieren. Das Bsp. deswegen weil genau das wird im
unten beim ArrayList words ... wird angewendet. Warum macht man das so?
In den Büchern wird beschrieben ein Interface ist eine besondere Form
einer abstrakten Klasse und dessen Methoden muss man ebenfalls
implementieren wenn man das I. implementiert.

Code:
Interface intrfc = Klasse.methode()

Warum geht das u.s. Bsp?

Code:
List words = Arrays.asList(new String[] { "Jane", "aara", "multiko" } );
Man hat eine Varibale vom Typ "List" und weisst Werte zu,
wozu soll das gut sein (OOP-technisch oder auch sosnt).

Was ist hier ganz klar der Unterschied zw. beider Möglis ?

Code:
ArrayList words = ArrayList(new String[] { "Jane", "aara", "multiko" } );

Hätte es doch auch getan oder ?

Hoffe irgendjemand kann mir das mal verständlich erklären.

Grüße
gasiko
 
M

maki

Gast
Wenn du ArrayList sagst, dann meinst du eine konkrete Klasse, und nur diese kann verwendet werden.
Wenn du List sagst, könnte es eine ArrayList sein, oder eine LinkedList, oder ein Vektor... die konkrete Klasse ist egal, und das ist gut so.

Such doch mal nach Polymorphie.
 

gasiko

Mitglied
maki danke für den Hinweis aber das ist mir noch einwenig schlank.
Kannst du bitte etwas weiter ausholen ?

Grüße
gasiko
 

HLX

Top Contributor
Beispiel:
Du hast eine Klasse "Mensch", die von einer abstrakten Klasse "Lebewesen" abgeleitet ist. Nun willst du, dass der Mensch geht und implementierst eine entsprechende Methode "go()". Da nicht alle Lebewesen gehen, sondern andere z.B. auch kriechen oder schwimmen implementierst du es direkt am Menschen statt am Lebewesen.

Jetzt willst du eine Klasse "Hund" und eine Klasse "Katze" erstellen. Auch diese werden von Lebewesen abgeleitet und können gehen.

Im dritten Schritt erzeugst du eine Demo an der Menschen, Hunde und Katzen teilnehmen. Du implementierst dafür eine Collection, die jene Lebewesen hält. Anschließend iterierst du über die Collection und lässt die enthaltenen Objekte gehen. Wie würdest du nun die Geh-Methode aufrufen?

Vorschlag: Die Klassen Mensch, Hund und Katze implementieren eine Interface "KannGehen". Dieses besagt, dass jeder, der gehen kann, die Methode go() implementieren muss. Und schon sieht das ganze so aus.

Code:
public void execute(Collection menschHundKatze) {
     for(int i = 0; i < menschHundKatze.size(); i++) {
           KannGehen element = (KannGehen)menschHundKatze.get(i);
           element.go();
     }
}

Die implementierende Klasse spielt hier keine Rolle. Der Vorgang kann für alle Objekte, die das Interface implementieren ausgeführt werden.
 

jPat

Bekanntes Mitglied
Zum Beispiel mit den Listen:
Stell dir folgende Aufgabestellung vor:
Implementieren Sie eine Liste, die das Interface List implementiert. Diese Liste soll nach einer ganz bestimmten Definition funktionieren. zb: Doppelt verkettete Liste oder auch basierend auf Arrays.

Nun existieren in Java Klassen, die bestimmte Aufgaben (Methoden) für dich erledigen sollen, aber derjenige, der diese Klassen programmiert hat, weiß nicht, welche konkreten Klassen in diese Methoden hineinkommen sollen. Nun definiert man ein Interface, um sicherzustellen, dass die Klasse auch die Methoden bereitstellt. Also kann diese Methode ALLE KLASSEN aufnehmen, die das vorher definierte Interface Implementiert haben.

Du Kannst mit deiner eigenen Liste nun auch folgendes machen:
Code:
DeineList dn = Arrays.asList(new String[] { "Jane", "aara", "multiko" } );

:wink:
 

NTB

Bekanntes Mitglied
Noch ein ganz einfaches praktisches Beispiel von mir:
Ich hatte eine Liste von Objekten. 22000 waren es etwa. Und über die wurden Berechnungen angestellt. Dafür habe ich erst eine LinkedList genommen. Leider hatte ich damit Performanceprobleme, weil LinkedList nicht so schnell ist. Also habe ich eine ArrayList genommen und ihr eine sinnvolle Anfangsgröße gegeben. Dadurch wurde das ganze schneller.
Hätte ich jetzt überall statt List etwa LinkedList stehen gehabt (zum Beispiel in Methodensignaturen, denen die Liste übergeben wurde), hätte ich das überall im Code ändern müssen. So musste ich an einer einzigen Stelle bei der Initialisierung aus List list = new LinkedList() nur List list = ArrayList() machen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Fragerjava Java Schnittstellen Java Basics - Anfänger-Themen 6
onlyxlia Schlüsselworte Was meint man mit "einen Typ" in Java erstellen? Java Basics - Anfänger-Themen 2
O Java Kara geschweifte Klammern Java Basics - Anfänger-Themen 2
richis-fragen Mausrad logitech kann links und rechts klick wie in java abragen. Java Basics - Anfänger-Themen 15
XWing Java Klssenproblem Java Basics - Anfänger-Themen 4
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
F TableModelListener: java.lang.ArrayIndexOutOfBoundsException: 132 Java Basics - Anfänger-Themen 3
G Java 8 - Support-Ende Java Basics - Anfänger-Themen 7
T Java Weihnachtsbaum + Rahmen Java Basics - Anfänger-Themen 1
N Will mit Java anfangen Java Basics - Anfänger-Themen 13
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
M Java Mail Programm Java Basics - Anfänger-Themen 4
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
JaZuDemNo Java im Studium Java Basics - Anfänger-Themen 7
E Java Programm zur anzeige, ob Winter- oder Sommerzeit herrscht Java Basics - Anfänger-Themen 62
I QR code in Java selber generieren Java Basics - Anfänger-Themen 5
V Java-Ausnahmebehandlung: Behandlung geprüfter Ausnahmen Java Basics - Anfänger-Themen 1
krgewb Java Streams Java Basics - Anfänger-Themen 10
A Überwältigt von der komplexen Java Welt Java Basics - Anfänger-Themen 29
O Mehrfachvererbung auf Spezifikations- und Implementierungsebene in Java. Interfaces Java Basics - Anfänger-Themen 19
John_Sace Homogene Realisierung von Generics in Java ? Java Basics - Anfänger-Themen 19
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
R mit Java API arbeiten Java Basics - Anfänger-Themen 9
P JDK installieren Probleme bei der Java-Installation Java Basics - Anfänger-Themen 8
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
Timo12345 JNLP File mit Java öffnen Java Basics - Anfänger-Themen 2
S Video Editierung mit Java.._ Java Basics - Anfänger-Themen 2
F Einstelungen in Java - CursorBlinkRate Java Basics - Anfänger-Themen 10
A PHP $_POST["name"] in Java Java Basics - Anfänger-Themen 3
vivansai21 Is there a oneliner to create a SortedSet filled with one or multiple elements in Java? Java Basics - Anfänger-Themen 9
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
Arjunreddy Can someone please tell me how to use a debugger in BlueJ(a Java environment) Java Basics - Anfänger-Themen 1
M Java assoziationen (UML) Java Basics - Anfänger-Themen 8
H Excel-Tabellen mit Java erstellen Java Basics - Anfänger-Themen 4
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
P Wie kann ich in meinem Java Programm etwas dauerhaft speichern? Java Basics - Anfänger-Themen 5
H Nutzt Eclipse alle CPU-Threads beim Ausführen von Java-Programmen? Java Basics - Anfänger-Themen 4
xXGrowGuruXx Java einstieg, leichte sache 0 verstanden Java Basics - Anfänger-Themen 7
A java.sql.SQLException: Data type mismatch. Java Basics - Anfänger-Themen 1
H Java-Programm zur Ausgabe von Zuständen Java Basics - Anfänger-Themen 80
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
A Lerngruppe Java Java Basics - Anfänger-Themen 2
G Help me in the Java Program Java Basics - Anfänger-Themen 2
L Java- Vererbung Java Basics - Anfänger-Themen 4
LimDul Suche Java Stream Tutorial Java Basics - Anfänger-Themen 2
_so_far_away_ Ich möchte Java lernen Java Basics - Anfänger-Themen 11
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
V Bild per Java Script austauschen Java Basics - Anfänger-Themen 7
MoxMorris this Keyword in Java Java Basics - Anfänger-Themen 14
D Wie kann man in Java nach Arrays auf Duplikate prüfen Java Basics - Anfänger-Themen 12
wolei JAVA Zeitdifferenz feststellen. Java Basics - Anfänger-Themen 4
DiyarcanZeren Rekursion in Java Java Basics - Anfänger-Themen 5
wolei Java generic interface in a generic class Java Basics - Anfänger-Themen 6
monsterherz Ablauf der Erstellung eines Java Programmes Java Basics - Anfänger-Themen 17
monsterherz Circle.java:5: error: <identifier> expected Java Basics - Anfänger-Themen 2
julian-fr Wie kann ich am besten Java lernen? Java Basics - Anfänger-Themen 17
A Java-Properties und -RessourceBundles Java Basics - Anfänger-Themen 5
lrnz22 Java-Basics-Aufgabe Java Basics - Anfänger-Themen 8
R Java kann nicht installiert werden Java Basics - Anfänger-Themen 8
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
G In ein java Dokument Ton einbinden Java Basics - Anfänger-Themen 1
C was heisst es wenn java ']' erwartet ? Java Basics - Anfänger-Themen 2
KeinJavaFreak Erste Schritte Programm "Java(TM) Platform SE binary " nicht vorhanden Java Basics - Anfänger-Themen 1
KeinJavaFreak Erste Schritte Java "Executable Jar File" nicht vorhanden Java Basics - Anfänger-Themen 1
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
J Java Testklasse Java Basics - Anfänger-Themen 5
P Java Selenium . Parameterized.Parameters erzeugt eine Fehlermeldung Java Basics - Anfänger-Themen 14
W Java-Code mit Array Java Basics - Anfänger-Themen 14
W Java-Code Java Basics - Anfänger-Themen 2
P BeforeEach AfterEach werden nicht ausgeführt. Java / Selenium Java Basics - Anfänger-Themen 4
A Wie führe ich eine Batch-Datei von meiner Java-Anwendung aus? Java Basics - Anfänger-Themen 18
W Java code- TicTac toe Java Basics - Anfänger-Themen 51
Ostkreuz Java Docs Java Basics - Anfänger-Themen 9
R Java boolean Unterschied " == " und " = " Java Basics - Anfänger-Themen 3
D Java Programm mit Batch-Datei starten Java Basics - Anfänger-Themen 32
W Java-code Java Basics - Anfänger-Themen 8
W Java-code Java Basics - Anfänger-Themen 9
W Java-Code erklären Java Basics - Anfänger-Themen 6
A Java Kurs / Tutorial Java Basics - Anfänger-Themen 6
K Java Lotto Spiel; ich komme nicht weiter Java Basics - Anfänger-Themen 15
R Operatoren Rechenoperation in Java verwenden für Calculator Java Basics - Anfänger-Themen 2
P Java 2n Potenzieren Java Basics - Anfänger-Themen 1
J Java Hamster Java Basics - Anfänger-Themen 4
D Wie sehe ich ein Java-Programm? Java Basics - Anfänger-Themen 27
V Die Funktion des neuen Schlüsselworts in Java Java Basics - Anfänger-Themen 1
W Junit-Test (Java) Java Basics - Anfänger-Themen 4
W Testfälle bei Java ( Junit-Test) Java Basics - Anfänger-Themen 3
laxla123 If-else Java Java Basics - Anfänger-Themen 4
RashAGhul Java Verwaltungstool Erstellen mit kaum Wissen Java Basics - Anfänger-Themen 9
S Substring in java Java Basics - Anfänger-Themen 3
Z Operatoren Java Applikation Java Basics - Anfänger-Themen 8
Tw1Z Erste Schritte Sort in java Java Basics - Anfänger-Themen 2
sasnitzer java augensumme von zwei würfeln ist 1 Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben