Exportieren (0) Drucken
Alle erweitern

Schnittstellen (C#-Programmierhandbuch)

Schnittstellen werden mit dem interface-Schlüsselwort definiert. Beispiel:

interface IComparable
{
    int CompareTo(object obj);
}

Schnittstellen beschreiben eine Gruppe verwandter Verhaltensweisen, die zu einer beliebigen Klasse oder Struktur gehören können. Schnittstellen können aus Methoden, Eigenschaften, Ereignissen, Indexern oder einer beliebigen Kombination dieser vier Membertypen bestehen. Eine Schnittstelle darf keine Felder enthalten. Schnittstellenmember sind automatisch öffentlich.

Klassen und Strukturen können von Schnittstellen auf dieselbe Art und Weise erben, wie Klassen eine Basisklasse oder -struktur erben. Es bestehen lediglich zwei Unterschiede:

  • Eine Klasse oder eine Struktur kann mehr als eine Schnittstelle erben.

  • Wenn eine Klasse oder Struktur eine Schnittstelle erbt, erbt sie nur die Methodennamen und -signaturen, da die Schnittstelle selbst keine Implementierungen enthält. Beispiel:

    public class Minivan : Car, IComparable
    {
        public int CompareTo(object obj)
        {
            //implementation of CompareTo
            return 0;  //if the Minivans are equal
        }
    }
    
    

Um einen Schnittstellenmember zu implementieren, muss der entsprechende Member der Klasse öffentlich und nicht statisch sein, und er muss über denselben Namen und dieselbe Signatur wie der Schnittstellenmember verfügen. Eigenschaften und Indexer für eine Klasse können zusätzliche Accessoren für eine Eigenschaft oder einen Indexer definieren, die bzw. der für eine Schnittstelle definiert ist. Eine Schnittstelle kann beispielsweise eine Eigenschaft mit einem get-Accessor deklarieren, während die Klasse, die die Schnittstelle implementiert, dieselbe Eigenschaft mit einem get-Accessor und einem set-Accessor deklarieren kann. Wenn die Eigenschaft oder der Indexer jedoch explizite Implementierung verwendet, müssen die Accessoren übereinstimmen.

Schnittstellen und Schnittstellenmember sind abstrakt. Schnittstellen stellen keine Standardimplementierung bereit. Weitere Informationen finden Sie unter Abstrakte und versiegelte Klassen und Klassenmember.

Die IComparable-Schnittstelle teilt dem Benutzer eines Objekts mit, dass das Objekt mit anderen Objekten desselben Typs verglichen werden kann, wobei der Benutzer der Schnittstelle keinerlei Implementierungsdetails zu dieser Funktionalität kennen muss.

Schnittstellen können von anderen Schnittstellen erben. Eine Klasse kann eine Schnittstelle durch geerbte Basisklassen oder Schnittstellen mehrfach erben. In diesem Fall kann die Klasse die Schnittstelle jedoch nur einmal implementieren, wenn sie als Teil der neuen Klasse deklariert wurde. Wenn die geerbte Schnittstelle nicht als Bestandteil der neuen Klasse deklariert wurde, wird die Implementierung der Schnittstelle von der Basisklasse bereitgestellt, in der die Schnittstelle deklariert wurde. Eine Basisklasse kann Schnittstellenmember unter Verwendung virtueller Member implementieren. In diesem Fall kann die Klasse, die die Schnittstelle erbt, durch Überschreiben der virtuellen Member das Schnittstellenverhalten ändern. Weitere Informationen zu virtuellen Membern finden Sie unter Polymorphismus.

Eine Schnittstelle verfügt über folgende Eigenschaften:

  • Eine Schnittstelle ähnelt einer abstrakten Basisklasse: Jeder nicht abstrakte Typ, der die Schnittstelle erbt, muss alle ihre Member implementieren.

  • Eine Schnittstelle kann nicht direkt instanziiert werden.

  • Schnittstellen können Ereignisse, Indexer, Methoden und Eigenschaften enthalten.

  • Schnittstellen enthalten keine Implementierung von Methoden.

  • Klassen und Strukturen können von mehr als einer Schnittstelle erben.

  • Eine Schnittstelle selbst kann von mehreren Schnittstellen erben.

Anzeigen:
© 2015 Microsoft