Interface



  • Helft mir dringend weiter, bitte...
    Ich sehe den Sinn einfach nicht eines Interfaces!!!
    Könnt ihr mir dies bitte genauer Erklären? Nutzen?
    MfG

    Helpi



  • Mehrfachvererbung.



  • @Twiggy
    Genau das ist falsch

    Mit Interfaces soll keine Mehrfachvererbung gemacht werden sondern lediglich den implementierenden Klassen vorgeschrieben werden, welche Methoden zu implementieren sind. Im Gegensatz zu Abstrakten Klassen ist eine Klasse die keine Methode aus der Interface-Definition implementiert nämlich nicht auch ein Interface sondern schlicht illegal. Wenn eine Klasse die Methoden aus der abstrakten Klasse nicht implementiert ist diese jedoch ebenfalls abstrakt.



  • Und nun auf Deutsch? Bitte, ich würde nur gerne den Sinn verstehen von Interfaces...

    Wenn es geht ein wenig simpler...

    Greez



  • Hmmm ich dachte eigentlich immer, dass mein Deutsch ausreichend sei aber na gut ...

    Interfaces beschreiben Typen, die aus Methodensignaturen und Konstanten bestehen, ohne ihre Implementierung anzugeben. Diese Typen werden von Klassen ausgefüllt, indem die geforderten Methodensignaturen mit Funktionalität ergänzt werden. Interfaces, oder zu deutsch Schnittstellen, sind im Wesentlichen abstrakte Klassen.

    Interfaces können auch einfach als Gruppierungen von Funktionen aufgefaßt werden, von denen sichergestellt ist, daß die Klassen, die Schnittstellen implementieren, mindestens die Funktionalität für eben diese Funktionen bereitstellen.

    Interfaces enthalten im Gegensatz zu abstrakten Klassen überhaupt keine implementierten Methoden; alle Methoden existieren nur als Funktionssignaturen. Eine Schnittstelle legt somit eine Menge von Methoden fest, die bei einem Objekt angwendet werden können. Abstrakte Klassen dagegen enthalten zum Teil bereits implementierte Methoden, um den von ihnen abgeleiteten Klassen ein gewisses Grundverhalten mitzugeben.

    Das fettgedruckte oben beschreibt den Unterschied Interface <-> Abstrakte Klassse.

    Ich hoffe dies ist nun richtiges Deutsch images/smiles/icon_smile.gif



  • Vielen Dank!!!
    Hat mir sehr weitergeholfen...

    Thanks...

    Helpi



  • @CengizS

    Intefaces haben aber den Vorteil, Mehrfachvererbungstauglich zu sein.

    Vorallem dienensie dazu Parameter für Funktionen zu sein. Jede Klasse die dieses Interface implementeirt, kann als Parameter für diese verwendet werden.



  • Pass auf, dass du Cengiz nicht zu sehr provozierst. Er ist auf das Thema Mehrfachvererbung schlecht zu sprechen. Ich hab von ihm deshalb auch schon was auf den Mund gekriegt, er sagt es ist falsch, und nicht nur das, er hat es auch noch fett geschrieben!
    Trotzdem bin ich immernoch der Meinung, dass Interfaces in erster Linie dazu dienen, das in Java unzulässige Erben von mehreren Vaterklassen zu kompensieren.



  • Original erstellt von Twiggy Ramirez:
    Pass auf, dass du Cengiz nicht zu sehr provozierst. Er ist auf das Thema Mehrfachvererbung schlecht zu sprechen.

    Jaa, pass bloß auf, sonst kommt der böse Cengiz zu dir nach Hause
    und dann gibs ordentlich Haue;)

    O'Dog



  • Übrigens lassen sich interfaces "mehrfachvererben"

    [ Dieser Beitrag wurde am 21.04.2002 um 04:19 Uhr von O'Dog editiert. ]



  • @Twiggy: Was heisst denn hier "auf den Mund geschlagen"? Es geht hier nur um eine rein objektive Beantwortung einer Frage. Es gibt in der Tat keine Mehrfachvererbung in Java und das Implementieren eines Interfaces stellt auch keine solche da.

    Es geht bei Interfaces nur darum einer Klasse vom Typ X vorzuschreiben, welche Methoden sie implementieren muss um sich "Y-able" zu schimpfen. Nicht zuletzt deswegen werden viele Interfaces mit Adjektiven benannt. "Comparable", "Runnable", "Serializable" etc. pp. Nur die Tatsache, dass man - wie O'Dog schon angedeutet hat - mehrere Interfaces implementieren kann ist kein Beweis für Mehrfachvererbung zumal man in Interfaces keine fertig implementierte Methode schreiben kann (ganz im Gegensatz zu abstrakten Klassen).

    [ Dieser Beitrag wurde am 21.04.2002 um 11:36 Uhr von CengizS editiert. ]



  • @Helium: In der Tat kann man mehrere Interfaces implementieren und ein Interface kann auch von mehreren Interfaces "abgeleitet" werden. Da man aber nie ein Objekt eines Interfaces (direkt) erzeugen kann ist damit die "Mehrfachvererbung" wieder weg, da sie nicht direkt nutzbar ist.



  • ich finde, diese auseinandersetzung könnte ins faq.. interfaces gibts da noch nicht..



  • Original erstellt von CengizS:
    Nur die Tatsache, dass man - wie O'Dog schon angedeutet hat - mehrere Interfaces implementieren kann ist kein Beweis für Mehrfachvererbung zumal man in Interfaces keine fertig implementierte Methode schreiben kann (ganz im Gegensatz zu abstrakten Klassen).

    Ich meinte eigentlich nicht das mehrfache Implementieren(im Sinne von implements) von Interfaces, sondern die tatsächliche Mehrfachvererbung
    bei Interfaces selbst (nicht zu verwechseln mit Klassen-Vererbung).

    wie z.B.:

    public interface Effenberg {
    public void mundZu();
    }

    public interface Stefan {
    public void mundAuf();
    }

    public interface Playboy extends Stefan, Effenberg {
    public void blubBlub();
    }
    hier: Mehrfachvererbung von Interfaces

    public class TestMultiple implements Playboy...usw.

    bis dänn, O'Dog



  • @O'Dog

    Das ist keine! Mehrfachvererbung. Das ist nicht mal eine ganz normale Vererbung. Vererbung bedeutet (unter anderem), dass du die Methoden von der geerbten Klasse mitbenutzen kannst. Dieses ist aber bei Interfaces nicht der Fall, du MUSST alle Methoden selbst implementieren.

    Egal was du anstellst, Java hat keine Mehrfachvererbung (und braucht es auch nicht) 😉



  • Na ja, im Prinzip sind wir uns ja alle einig, geht eigentlich nur um die Begrifflichkeiten.
    Fakt ist das die Methodensignaturen bei einem Subinterface von dem Superinterface geerbt/abgeleitet werden, ein Subinterface kann Methodensignaturen von mehreren Superinterfaces erben/ableiten.

    Nennt es Mehrfachvererbung von Interfaces oder
    Multiple Ableitbarung 😉 damit ist das Kind getauft.

    O'Dog



  • Na Interfaces implementiert man.
    Also würde ich Mehrfachimplementierung sagen :p



  • Hmm, parry, ich glaub wir haben uns immer noch nicht verstanden.

    es geht mir nicht um:
    public class MyClass implements InterfaceA, InterfaceB

    sondern um:
    public interface InterfaceA extends InterfaceB, InterfaceC



  • @O'Dog

    Ja es heisst

    public interface XYZ extends ABC
    

    allerdings wird hier nichts vererbt 🙂

    Vielmehr wird mit dieser Art von Delaration nur das Methodenset des Interfaces XYZ mit denen aus ABC sprichwörtlich erweitert. Dies kann man nennen wie man will - ab jetzt gehts in diesem Thread ja auch nur noch um "Begriffsdefinition" für den einen ist das Glas halb voll - für den anderen halb leer. 🙂 🙂

    In diesem Sinne einen schönen Sonntag 😉



  • @O'Dog

    Ah, jetzt ist mir klar was du meinst.
    Dafür kenne ich wirklich keinen eigenen Namen.


Anmelden zum Antworten