PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : der Nutzen von Interfacen in Java...



BuCkA
28-06-2005, 15:31
Hallo,

ich arbeite mich gerade etwas in das Thema Java Programmierung rein. Habe dazu auch das ein oder andere Buch. Nun bin ich auf ein Kapitel gestoßen, welches sich um Interface dreht. Leider werde ich weder aus diesem Buch noch aus diversen Online Doku's schlau, wofür nun Interfaces zum Beispiel verwendet werden können.

Im Grunde handelt es sich bei einem Interface doch um eine 'Klasse' welche lediglich aus Methoden-Rümpfen und Variablen besteht richtig?

Wozu dann das ganze.

Viele Grüße
Alexander

Boron
28-06-2005, 15:47
Ein "Interface" hat keine Attribute (Variablen).

Ein Interface sagt nur aus welche Methoden eine Klasse implementieren MUSS.


interface Tier {
public fressen();
public fortpflanzen();
};

class Hund implements Tier {
public fressen() {
// fressen
};

public fortpflanzen() {
// f*****
}

public bellen()
// wau
}
};Nicht jedes Tier kann bellen. Das tun nur Hunde. Aber alle Tiere fressen und pflanzen sich fort.

Du kannst also "gemeinsame" Methoden von Klassen nicht nur in "Oberklassen" zusammenfassen, sondern auch in Interfaces. Dabei stellt das Konstrukt "Interface" sicher, dass alle Klassen, die dieses Interface implementieren, auch wirklich diese bereitgestellten Methoden haben.

So kannst du beispielsweise ein Tier gegen ein anderes austauschen (Hund weg, Katze rein). Das neue Tier kann aber weiterhin fressen und f*****. Und da du ja in dieser Situation von Tieren sprichst sind dir "Spezialfähigkeiten" egal (bellen und miauen).

mwanaheri
28-06-2005, 17:34
1. ein Interface garantiert, dass du keine Methode zu implementieren vergisst.
2. Wenn du in unterschiedlichen Klassen ein Interface implementierst, kannst du alle Objekte dieser Klassen zu Interface casten und die Methoden des Interfaces nutzen, ohne weitere Details über die Klasse des jeweiligen Objektes zu haben.
3. man umgeht damit manchmal das Problem der Mehrfachvererbung

anda_skoa
28-06-2005, 19:27
Im Grunde handelt es sich bei einem Interface doch um eine 'Klasse' welche lediglich aus Methoden-Rümpfen und Variablen besteht richtig?


Wie Boron schon gschrieben hat, gibt es in Interfaces keine Variablen.
Es gibt auch keine Methodenrümpfe, nur deren Deklaration, also nur die Signatur.

Eines meiner Lieblingsbeispiel zu dem Konzept sind Flächen von Körpern.

Ein Körper wäre ein Objekt, die Flächenformen seine Interfaces.
zB eine Kugel ist aus jeder Seite betrachtet ein Kreis, ein geradestehender Würfel ein Quadrat, eine Pyramide je nach Richtung ein Quadrat oder ein Dreieck, ein Kegel ein Dreieck oder ein Kreis.

Wenn du jetzt eine Platte mit Löchern hast (Anforderungen an Objekte) dann reicht dir die Kenntnis des Interfaces um zu wissen ob der Körper durchpasst.

Ciao,
_