Was ist der Unterschied zwischen öffentlich, privat, geschützt und ohne Zugriffsmodifizierer?
Alle meine college-Jahre habe ich mit public
und würde gerne wissen, der Unterschied zwischen public
private
und protected
?
Außerdem was will static
tun, als gegen nichts?
InformationsquelleAutor der Frage MrM | 2009-03-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zugriffsmodifizierer
Wenn keine zugriffsmodifizierer gesetzt ist, wird eine standardmäßige access-modifier verwendet wird. Es gibt also immer eine form von access-modifier-auch wenn es nicht gesetzt wird.
Statische
Statische Klassen werden Häufig als Service verwendet werden, können Sie Sie wie folgt:
InformationsquelleAutor der Antwort mbillard
Öffentlichen - Wenn Sie sehen können, die Klasse, dann können Sie sehen, die Methode
Private - Wenn Sie Teil der Klasse, dann können Sie sehen, die Methode, sonst nicht.
Geschützt - das Gleiche wie die Privaten, sowie alle Nachkommen können auch sehen, die Methode.
Statische (Klassen -) - Erinnern sich an die Unterscheidung zwischen "Klasse" und "Objekt" ? Vergessen Sie alles, was. Sie sind die gleichen, die mit "statischen"... die Klasse ist die eine und einzige Instanz von sich selbst.
Statische (Methode) - Wenn Sie diese Methode verwenden, wird es einen Bezugsrahmen, der unabhängig von der eigentlichen Instanz der Klasse ist das Teil.
InformationsquelleAutor der Antwort JosephStyons
Einer grafischen übersicht (summary in a nutshell)
Für die Standardwerte wenn Sie keinen access modifier vor, siehe hier:
Standard-Sichtbarkeit für C# - Klassen und-member (Felder, Methoden, etc)?
Nicht verschachtelte
Verschachtelt:
InformationsquelleAutor der Antwort Stefan Steiger
Hinsichtlich der Frage der Nichts
InformationsquelleAutor der Antwort leppie
InformationsquelleAutor der Antwort Narottam Goyal
Hmm.
Siehe hier: Zugriffsmodifizierer.
Kurz gesagt:
Öffentlichkeit gibt die Methode oder geben Sie die vollständige Sichtbarkeit von anderen Typen/Klassen.
Private erlaubt nur der Typ mit der privaten Methode/variable Zugriff auf die private Methode/variable (beachten Sie, dass verschachtelte Klassen haben auch Zugriff auf die Klassen mit private Methoden/Variablen).
Geschützt ähnlich ist zu private, abgesehen von abgeleiteten Klassen können auch den Zugriff auf geschützte Methoden.
"Nichts" ist VB.NET's äquivalent zu null. Obwohl, wenn man sich auf "nichts" im Sinne von "keinen access-modifier", dann hängt es ab, obwohl eine sehr grobe Faustregel (natürlich in C#) ist, dass wenn Sie nicht explizit angeben, eine access-modifier der Methode/Variablendeklaration ist in der Regel als eingeschränktwie es sein kann.
also
ist effektiv das gleiche wie:
Den verlinkten MSDN-Artikel bieten wir eine vollständige Beschreibung, wenn es keine zugriffsmodifizierer explizit angegeben.
InformationsquelleAutor der Antwort CraigTP
öffentlichen - können den Zugriff von jedem und überall.
private - kann nur zugegriffen werden, die mit in der Klasse, deren Teil es ist.
geschützt - kann nur zugegriffen werden, die mit in der Klasse oder jedes Objekt erbt aus der Klasse.
Nichts ist wie null, aber in VB.
Statisch heißt, Sie haben eine Instanz, Objekt, Methode für jede Instanz der Klasse.
InformationsquelleAutor der Antwort Tony
mmm...
Statisch bedeutet, dass Sie zugreifen können, die Funktion, ohne eine Instanz der Klasse.
Können Sie direkt aus der definition der Klasse.
InformationsquelleAutor der Antwort gbianchi
Den status des Privaten zeigt, dass die Variablen kann nur zugegriffen werden, Objekte der gleichen Klasse. Geschützt status erweitert, der Zugang zu den Nachkommen gehören der Klasse als gut.
"aus der obigen Tabelle können wir sehen, den Unterschied zwischen private und protected... bin denke, dass beides das gleiche ....was also die Notwendigkeit, zwei separate Befehl"
Überprüfen MSDN link für mehr Informationen
InformationsquelleAutor der Antwort Grant Hood
Diese zugriffsmodifizierer angeben, wo Ihre Mitglieder sind sichtbar. Sie sollten wahrscheinlich Lesen Sie diese. Nehmen Sie den link von IainMH als Ausgangspunkt.
Statische Mitglieder einer pro Klasse und nicht eine pro Instanz.
InformationsquelleAutor der Antwort jpfollenius
Vorsichtig, beobachten Sie Ihre Zugänglichkeit Ihrer Klassen. Öffentlichen und geschützten Klassen und Methoden sind standardmäßig für jeden zugänglich.
Auch Microsoft ist nicht sehr explizite zeigen zugriffsmodifizierer (public, protected, etc.. keywords), wenn neue Klassen in Visual Studio erstellt werden. Also, nehmen gute Pflege, und denken Sie über Ihre Zugänglichkeit Ihrer Klasse, weil es die Tür zu Ihrer Umsetzung Interna.
InformationsquelleAutor der Antwort Patrick Peters
Ich denke, es ist zu guter OOP-design. Wenn Sie ein Entwickler sind, der eine Bibliothek, die Sie wollen, um zu verbergen das Innenleben der Bibliothek. Auf diese Weise können Sie ändern Sie Ihre Bibliothek Innenleben später auf. Setzen Sie also Ihre Mitglieder und Hilfsmethoden als private und nur Methoden der Schnittstelle sind öffentlich. Methoden, die überschrieben werden sollen, sollten geschützt werden.
InformationsquelleAutor der Antwort Darius Kucinskas
Umbuchung des genial-Diagramme aus diese Antwort.
InformationsquelleAutor der Antwort Paul
C# hat insgesamt 6 zugriffsmodifizierer:
private: Das Mitglied erklärt mit diese Zugänglichkeit kann sichtbar sein, innerhalb der mit Typ, es ist nicht sichtbar, auch abgeleitete Typen, andere Typen in der gleichen assembly oder Arten, die außerhalb der mit der Montage. d.h., der Zugriff ist beschränkt auf die mit nur Typ.
geschützt: Das Mitglied erklärt mit diese Zugänglichkeit kann sichtbar sein, innerhalb der Arten abgeleitet vom übergeordneten Typ innerhalb der mit der Montage, und die Typen, die, abgeleitet aus den mit Typ-außerhalb des mit der Montage. d.h., der Zugriff ist beschränkt auf abgeleitete Typen, die mit type.
internen: Das Mitglied erklärt mit diese Zugänglichkeit kann sichtbar innerhalb der assembly, in der sich das Mitglied, es ist nicht sichtbar bei Montage außerhalb des mit der Montage. d.h., der Zugriff ist beschränkt auf die mit der Montage nur.
internen, geschützten: Das Mitglied erklärt mit diese Zugänglichkeit kann sichtbar sein, innerhalb der Arten abgeleitet vom übergeordneten Typ innerhalb oder außerhalb der mit der Montage, ist es auch sichtbar für alle Arten innerhalb der mit der Montage. d.h., der Zugriff ist beschränkt auf die mit der Montage oder abgeleitete Typen.
öffentlichen: Das Mitglied erklärt mit diese Zugänglichkeit kann sichtbar innerhalb der assembly, in der sich das Mitglied, oder jede andere Versammlung, verweist auf die mit der Montage. d.h., der Zugriff ist nicht beschränkt.
C# 7.2 ist das hinzufügen einer neuen Ebene der Zugänglichkeit:
private protected: Das Mitglied erklärt mit diese Zugänglichkeit kann sichtbar sein, innerhalb der Arten abgeleitet aus diesen übergeordneten Typ innerhalb der mit der Montage. Es ist nicht sichtbar für alle Arten stammt nicht aus dem enthaltenden Typ oder außerhalb des enthaltenden Baugruppe. d.h., der Zugriff ist beschränkt auf abgeleitete Typen innerhalb der mit der Montage.
Quelle inklusive einem Beispiel-code of the new private protected access modifier
InformationsquelleAutor der Antwort Baccata