2009-06-24 5 views

Antwort

5

In C# und Java sind alle Methoden einer Schnittstelle öffentlich.

In Java ist das public-Schlüsselwort erlaubt, wahrscheinlich um Parsing-Regeln zu speichern. In C# wurde das public-Schlüsselwort als redundant betrachtet und wurde vollständig aus den Interface-Deklarationen entfernt.

+1

Korrektur: In Java ist das public-Schlüsselwort optional und wird ignoriert, falls vorhanden. –

+1

Nicht nur redundant, es ist eigentlich ein Compiler-Fehler, um es dort zu setzen. Eine ständige Quelle der Frustration für mich, die von Java zu C# kommt. –

+1

Danke. Aber es ist mehr als "überflüssig", der Compiler wird mich anschreien, wenn ich versuche, es hineinzusetzen. –

6

In C# und .Net im Allgemeinen sind alle Methoden an einer Schnittstelle standardmäßig öffentlich. Es gibt keine Möglichkeit, ihren Zugriff zu beschränken.

Betrachten Sie die Alternative, was würde es bedeuten, ein geschütztes Mitglied an einer Schnittstelle zu haben? Wie würden Sie die Zugriffsregeln festlegen, um einem Aufrufer einer Schnittstelle den Zugriff auf die bestimmte Methode zu erlauben oder zu verbieten? (Ich meine, geschützt im C# -Sinn, nicht im Java-Modus).

Noch besser, was würde privat bedeuten?

+1

'interne' /' Freund' auf der anderen Seite könnte theoretisch Sinn machen. Nicht, dass ich jemals gebraucht hätte. –

+0

Während diese Optionen keinen Sinn ergeben, wäre es manchmal sinnvoll, eine interne Implementierung einer internen Schnittstelle zuzulassen, ohne auf eine explizite Schnittstellenimplementierung zurückgreifen zu müssen. –

+0

Sie könnten mehrere Schnittstellen mit verschiedenen Methoden haben und diese an verschiedene Clients übergeben. – akarnokd

4

In C# müssen alle Mitglieder einer Schnittstelle öffentlich sein. Daher können Sie den Member-Deklarationen keine Sichtbarkeitsmodifizierer hinzufügen. Das public-Schlüsselwort ist daher redundant und wird nicht benötigt (wenn Sie es einfügen, erhalten Sie einen Compiler-Fehler).

Eine Schnittstelle ist ein Vertrag, der besagt, dass Sie alle in der Schnittstellendefinition angegebenen Funktionen bereitstellen. Wenn Sie private Mitglieder in einer Schnittstelle haben dürfen, würden Sie diese Funktionalität nicht offenlegen (und Sie würden daher den Vertrag verletzen).

+1

+1 für die Erklärung, warum Interface-Methoden immer öffentlich sind. In der Tat sollten Sie ein paar mehr bekommen. Tipp Hinweis, Leute! – Randolpho

+0

Vielen Dank Randolpho :-) –