Fragen zu interface

StrikeTom

Bekanntes Mitglied
Hallo leute,
ich wollte mal Fragen zum Theme interface(hab sowas noch nie gemacht) stellen:
1.Was ist ein interface?
2.Wie erzeugt man es?
3.Wofür benutzt man es?


Danke im Voraus:)
 

Luk10

Top Contributor
Hallo,

ein Interface ist eine Schnittstelle und fungiert als 100% abstrakte Klasse, d.h. du kannst in einem Interface nur abstrakte Methoden deklarieren:

Java:
public interface Meininterrface  {
  public void tuIrgendwas();
}

Bei Vererbung verwendet man es häufig um "The Deadly Diamond of Death" zu vermeiden, d.h. z.B 2 Klassen erben von einer Superklasse eine Methode, und eine weitere Klasse soll jetzt von diesen beiden erben ...
Wenn nun die untereste Klasse die Methode aufgeruft, weiß man nicht welche Methode als super.machIrgendas() herhalten muss.

Dashalbt lässt man Interfaces implementieren!
Java:
public class Meineklasse implements Meininterface {
}

Ich hoffe ich konnte dir ein bisschen weiterhelfen!

Luk!
 

StrikeTom

Bekanntes Mitglied
Danke:toll:
Ich glaub, dass ich es schon etwas(nicht wenig) mehr verstanden habe, aber zwei Fragen habe ich noch:
1.Wofür benutzt man sowas(Beispiel an einem Programm oder ähnliches)?
2.Wenn ich ein Interface mache:
Java:
public interface Sprache
{
public void sagedies(String s);
public void sagejenes(String s);
}
und dann eine Klasse mache, die "Sprache" implementiert:
Java:
public class Mensch implements Sprache
{
    public void sagedies(String s)
    {
    //irgendetwas
    }
    public void sagejenes(String s)
    {
    //irgendetwas
    }
}
Dann kann cih das interface und das implementieren des interfaces doch einfach weglassen, oder?
 
Zuletzt bearbeitet:

Luk10

Top Contributor
In meinem aktuellen Projekt verwende ich zwei Stück um mir zusätzlich Collections zu ersparen.

Damit das klarer wird hier ein Codebeispiel:

Mein Interface mit der Methode zeichneGrafik
Java:
public interface Zeichenbar {
  public void zeichneGrafik (Graphics g);
}

Diese Inteface lasse ich eine Klasse inplementieren, und seine Methode überschreiben:

Java:
public class Zellen extends Grafiken implements Zeichenbar {
    @Override
    public void zeichneGrafik (Graphics g) {
        g.drawImage(image, x, y, null);
    }
}

Wenn ich jetzt ein Collection habe die vom Typ der Superklasse ist (hier ist es Grafiken "extends Grafiken") und ich will für die Elemente, die sich "zeichenen" können, d.h. für alle Zellen die Methode zeichnen aufrufen will kann ich es folgendermaßen machen:

Java:
ArrayList<Grafiken> meineGrafiken = new ArrayList<Grafiken>(); // Eine einfach ArrayList vom Supertyp Grafiken
meineGrafiken.add(new Zelle()); // Ein Beispiel Element 
for (Zeichenbar zeich : meineGrafiken) { 
         zeich.zeichneGrafik(g);  
    }

Die for-Schleife geht für jedes Element, dass Zeichenbar implementiert die Liste durch und ruft die überschriebene Methode zeicheGrafik() auf!

Hoffe das ist soweit verständlich!

Luk
 
Zuletzt bearbeitet:

Luk10

Top Contributor
Danke
Ich glaub, dass ich es schon etwas(nicht wenig) mehr verstanden habe, aber zwei Fragen habe ich noch:
1.Wofür benutzt man sowas(Beispiel an einem Programm oder ähnliches)?
2.Wenn ich ein Interface mache:

Dann kann cih das interface und das implementieren des interfaces doch einfach weglassen, oder?

Es geht ja immer um Vererbung und OO-Desing!
D.h. ich möchte z.B. doppelten Code vermeiden, oder unnötiges weglassen (s.h. mein Beispiel)

Besonders zum tragen kommen Interfaces auch in Entwurfsmustern (kannste ja mal Googlen und dir welche anschauen)

So long, Luk
 

StrikeTom

Bekanntes Mitglied
DANKE:D
Ich glaub ich habs jetzt einigermaßen verstanden:D
Außer diese for-schleife:
Java:
for (Zeichenbar zeich : meineGrafiken) { 
         zeich.zeichneGrafik(g);  
    }
Wie funktioniert die for-schleife?
 

Thief

Bekanntes Mitglied
Das ist ne Kurzschreibweise von

Java:
for(int i=0; i<meineGrafiken.size(); i++)
{
   meineGrafiken.get(i).zeichenGrafi();
}
 

Luk10

Top Contributor
Java:
for (Teilbar teil : meineGrafiken) {

Für - Jedes Element in meineGrafiken, dass Teilbar implementiert gehe die Liste durch:
[Jedes Element wird jetzt nacheinander auf die implementierung geprüft, also wie bei einer normalen
for (Element e : Collection)]

Java:
teil.zeichneGrafik(g);
Wenn es auf ein Element gestoßen ist: Nimm dieses Element und rufe für dieses Element (in dem Beispiel das Zellen-Objekt) die überschriebene Methode auf, die ich in dem Interface Teilbar deklariert habe (zeichneGrafik).

Dann gehe wieder nach oben und Prüfe das nächste Element auf Teilbar

Hoffe es ist verständlich ...
Solltest du die for (Element e : Collection) nicht kennen erklär ich sie dir gerne nochmal!

Luk
 

Luk10

Top Contributor
Das ist ne Kurzschreibweise von

Java:
for(int i=0; i<meineGrafiken.size(); i++)
{
   meineGrafiken.get(i).zeichenGrafi();
}

Nein! Da somit der Effekt des Interfaces verloren geht!
Ich will ja nicht zeichneGrafiken auf irgendein Objekt aufrufen, sondern nur auf Elemente die Zeichenbar implementieren!

Luk
 

Antoras

Top Contributor
Für - Jedes Element in meineGrafiken, dass Teilbar implementiert gehe die Liste durch:
Das stimmt nicht. foreach ist ein Ersatz für Iterator; es ersetzt aber nicht instanceof.

Du musst explizit überprüfen ob deine Grafikelemente Zeichenbar implementieren, ansonsten fliegt dir das Ding um die Ohren:
Java:
ArrayList<Grafiken> meineGrafiken = new ArrayList<Grafiken>(); // Eine einfach ArrayList vom Supertyp Grafiken
meineGrafiken.add(new Zelle()); // Ein Beispiel Element 
for (Grafiken zeich : meineGrafiken) {
  if (zeich instanceof Zeichenbar) {
         zeich.zeichneGrafik(g);  
  }
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Interface Fragen zum Interface Java Basics - Anfänger-Themen 7
W Fragen zu Interface Java Basics - Anfänger-Themen 2
Zrebna Fragen zu einem Klassendiagramm Java Basics - Anfänger-Themen 8
H Fragen zu Wrapperklassen Java Basics - Anfänger-Themen 29
S Best Practice Fragen zu Projektstruktur einer Datenbank-Abfrage-App (MVC) Java Basics - Anfänger-Themen 13
A Bei VierGewinnt fragen ob man gegen CPU oder Menschen spielen will. Java Basics - Anfänger-Themen 7
A Bei VierGewinnt vorher fragen, ob man gegen den Computer spielen möchte oder gegeneinander. Java Basics - Anfänger-Themen 1
A Bei VierGewinnt fragen, ob man gegen den Computer spielen möchte oder gegeneinander Java Basics - Anfänger-Themen 1
sserio Wie kann man nach einer Klasse fragen? Java Basics - Anfänger-Themen 12
G Fragen zu Kompelierfehler in Aufgabe. Java Basics - Anfänger-Themen 25
E Bäume/ allgemeine Fragen Java Basics - Anfänger-Themen 21
O Falsche Antworten zu Fragen Java Basics - Anfänger-Themen 4
S Diverse Fragen vor Schulaufgabe ;) Java Basics - Anfänger-Themen 4
S Fragen zu Ausgabe double und float Java Basics - Anfänger-Themen 3
B fragen zu Aufbau eines UML-Klassendiagramm Java Basics - Anfänger-Themen 1
C 3 Fragen rund um Klassenattribute Java Basics - Anfänger-Themen 8
L Erste Schritte Log4J Fragen Java Basics - Anfänger-Themen 5
NeoLexx Fragen zu diversen Elementen der Javabibliothek Java Basics - Anfänger-Themen 5
D Budget Manager fragen zur Umsetzung Java Basics - Anfänger-Themen 9
N Fragen zur Datenspeicherung Java Basics - Anfänger-Themen 45
T Java Anfänger mit konkreten Fragen Java Basics - Anfänger-Themen 2
CT9288 Fragen zu Java Java Basics - Anfänger-Themen 16
W Fragen zu Generics Java Basics - Anfänger-Themen 14
T ObjectInput/OutputStream Fragen zur Funktionsweise Java Basics - Anfänger-Themen 3
J Fragen zu einer Methode Java Basics - Anfänger-Themen 3
J Fragen zum Code aus dem Buch "Schrödinger programmiert Java 2.te Ausgabe" Java Basics - Anfänger-Themen 6
Z Fragen zu Exception (Throws/throw) Java Basics - Anfänger-Themen 7
J Fragen zu Input/Output Java Basics - Anfänger-Themen 3
J Erste Schritte Oracle Tutorials zu Java 8 - Fragen dazu Java Basics - Anfänger-Themen 1
H Java Quereinsteiger Roadmap und Fragen Java Basics - Anfänger-Themen 29
H fragen Java Basics - Anfänger-Themen 15
M Samelsarium Grundlegender Fragen 2 Java Basics - Anfänger-Themen 9
M Sammelsarium an Grundlagen Grundlagen Fragen Java Basics - Anfänger-Themen 11
B Java ist / wird kostenpflichtig. Ein paar Fragen Java Basics - Anfänger-Themen 1
J Fragen zu synrchonized und kritischen Abschnitten Java Basics - Anfänger-Themen 5
S Fragen zu einem Rechentrainer Java Basics - Anfänger-Themen 2
B Java Vererbung Fragen (zu Code Beispiel) Java Basics - Anfänger-Themen 3
J Wo kann man Fragen zu ireport stellen. Java Basics - Anfänger-Themen 0
M Fragen zum Anlegen und Benutzen von Listen Java Basics - Anfänger-Themen 9
G Ein paar Anfänger Fragen zu StdDraw Java Basics - Anfänger-Themen 4
D Fragen zur Klassen Java Basics - Anfänger-Themen 4
Aprendiendo Zwei Fragen und ein geerbtes "protected"-Attribut Java Basics - Anfänger-Themen 2
J Interface Fragen bezüglich "Sauberkeit" von Code Java Basics - Anfänger-Themen 5
D Objekte-Fragen Java Basics - Anfänger-Themen 1
V Erste Schritte Habe Fragen zu der For und While Schleife als auch Inkrement und Dekrement Java Basics - Anfänger-Themen 4
D Anfänger-Fragen(Parameter einer Methode) Java Basics - Anfänger-Themen 7
K Zwei Fragen zu Graphics/Graphics2D Java Basics - Anfänger-Themen 5
R Fragen über den Konstruktor Java Basics - Anfänger-Themen 0
Azazel Ein paar Fragen zu Methodenaufrufen(java.awt) Java Basics - Anfänger-Themen 2
S Erste Schritte Fragen zur For-Schleife Java Basics - Anfänger-Themen 9
GreenTeaYT Exception und zur OOP fragen? Java Basics - Anfänger-Themen 3
C Fragen zum Spigot Plugin (1.8) Java Basics - Anfänger-Themen 6
J Fragen zu Exceptions Java Basics - Anfänger-Themen 24
N Quiz- Fragen zufällig anzeigen lassen Java Basics - Anfänger-Themen 7
J Verschieden Fragen über Java Programmierung Java Basics - Anfänger-Themen 3
L Viele Fragen zu den Grundlagen Java Basics - Anfänger-Themen 5
B Fragen zu ZIP-File Java Basics - Anfänger-Themen 9
L fragen zu arrays Java Basics - Anfänger-Themen 8
L Fragen zu selbstgeschriebenem Programm Java Basics - Anfänger-Themen 5
M Fragen zum Auslesen von HTML Seiten Java Basics - Anfänger-Themen 5
J Threading-Aufgabe. Totale Noob Fragen, aber bitte trotzdem beantworten ;) Java Basics - Anfänger-Themen 7
S Java Fragen Konstruktor & Statische Methoden Java Basics - Anfänger-Themen 4
K Erste Schritte Frage Antwort Spiel - Fragen zur Planung Java Basics - Anfänger-Themen 2
C Java Applet Fragen: Serialisierung, Excel import Java Basics - Anfänger-Themen 2
Anfänger2011 2 kleine Fragen zu ArrayListen Java Basics - Anfänger-Themen 5
S Fragen zu Ausdrücken&Bedingungen Java Basics - Anfänger-Themen 5
A 2 kurze Anfänger fragen Java Basics - Anfänger-Themen 6
H grundlegende Fragen Java Basics - Anfänger-Themen 3
V Interface ich schäme mich das zu fragen, aber ich schaff nicht ein Text zu zentrieren :( [javaFX] Java Basics - Anfänger-Themen 6
N Programm: Fragen beantworten Java Basics - Anfänger-Themen 6
C Anfänger Anfänger Fragen Java Basics - Anfänger-Themen 8
Z Compiler-Fehler LinkedList Fragen Java Basics - Anfänger-Themen 4
D Rekursion Allgemeine Fragen Java Basics - Anfänger-Themen 2
D [Fragen] zu Methoden Java Basics - Anfänger-Themen 2
S Fragen zur Implementierung eines Binärbaums Java Basics - Anfänger-Themen 3
T Ein paar Fragen zu OOP und Java. Java Basics - Anfänger-Themen 16
J Allgemeine Fragen zur GUI Java Basics - Anfänger-Themen 1
johnnydoe Erste Schritte Erster Blick - erste Fragen Java Basics - Anfänger-Themen 11
DStrohma Grundsätzliche Fragen zu Drag & Drop Java Basics - Anfänger-Themen 1
N Klassen fragen zur getter und setter methode Java Basics - Anfänger-Themen 11
S 3 Fragen, Verzeichnis, GridLayout psoitionieren, Werte für JSpinner Java Basics - Anfänger-Themen 2
T Fragen zu Set / Relationen verknüpfen Java Basics - Anfänger-Themen 4
S 2 Fragen Java Basics - Anfänger-Themen 4
S Hallo und Fragen zu Arbeitsverzeichnis und Menü Java Basics - Anfänger-Themen 8
N Java Fragen... Java Basics - Anfänger-Themen 10
F ExecutorService Fragen! Java Basics - Anfänger-Themen 2
O HashMap Fragen Java Basics - Anfänger-Themen 8
C Fragen zu Arrays Java Basics - Anfänger-Themen 19
T viele "kleine" Fragen... Java Basics - Anfänger-Themen 3
S Fragen zur Implementierung eines Adressbuches Java Basics - Anfänger-Themen 20
S Fragen zu Arrays Java Basics - Anfänger-Themen 6
K Diverse Fragen zum Fehlerlogging Java Basics - Anfänger-Themen 9
N StringReader - Fragen Java Basics - Anfänger-Themen 8
C Einige Fragen zu Frames Java Basics - Anfänger-Themen 7
M Erste Schritte Allgemeine Fragen Java Basics - Anfänger-Themen 4
PaulG Fragen zu Binärbaum Java Basics - Anfänger-Themen 21
P Methoden Aquarium (Fragen zum Scanner) Java Basics - Anfänger-Themen 5
T Erste Schritte Fragen zu meinen kleinen Programm Java Basics - Anfänger-Themen 9
D 2 Fragen: Position ändern vs. LayoutManager / Bilder einfügen im Vordergrund Java Basics - Anfänger-Themen 3
O Zwei Fragen zu Methoden Aufrufen Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben