[.net Grundlagen der objektorientierten Programmierung] (7) Die Grundlage im Foundation-Modifikator

Dieser Artikel wurde übertragen von: https://www.cnblogs.com/yubinfeng/p/4550628.html

    Bevor wir den objektorientierten C # -Kern eingeben, müssen wir die Modifikatoren verstehen. Wenn wir über Variablen und Konstanten gesprochen haben, haben wir Modifikatoren verwendet und die Modifikatoren von Variablen und Konstanten erklärt.

   Was sind die Modifikatoren?

    Modifikatoren werden verwendet, um Typen und Deklarationen von Typmitgliedern zu qualifizieren

    Aus der Definition ist ersichtlich, dass es je nach Funktion in zwei Kategorien unterteilt ist: Zugriffsmodifikator und Deklarationsmodifikator

1. Zugriffsmodifikatoren (5)

Zugriffsmodifikator

Erklärung

Öffentlichkeit

Öffentlicher Zugang. Ohne Einschränkungen.

Privat

Privater Zugang. Der Zugriff ist auf Mitglieder dieser Klasse beschränkt, und auf Unterklassen und Instanzen kann nicht zugegriffen werden.

geschützt

Zugang schützen. Der Zugriff ist auf diese Klasse und Unterklassen beschränkt, und auf Instanzen kann nicht zugegriffen werden.

intern

Interner Zugang. Der Zugriff ist auf dieses Projekt beschränkt, auf andere kann nicht zugegriffen werden.

intern geschützt

Intern geschützter Zugang. Der Zugriff ist auf dieses Projekt oder diese Unterkategorie beschränkt, auf andere kann nicht zugegriffen werden

    Die modifizierbaren und Standardmodifikatoren der C # -Elementtypen lauten wie folgt:

Mitgliedertyp

Standardmodifikator

Kann geändert werden

Aufzählung

Öffentlichkeit

keiner

Klasse

Privat

öffentlich 、 geschützt 、 intern 、 privat 、 
geschützt intern

Schnittstelle

Öffentlichkeit

keiner

struct

Privat

öffentlich 、 intern 、 privat

2. Deklarationsmodifikatoren (10)

Teilweise : Definieren Sie Teilklassen und Strukturen in derselben Assembly

Statisch : Gibt an, dass es zum Typ selbst gehört und kein Mitglied eines bestimmten Objekts ist.

Abstract : Abstrakte Klasse, kann nur die Basisklasse anderer Klassen sein. Die Methoden in der Klasse werden nur als nicht implementiert deklariert, und die Implementierung der Methoden erfolgt in seiner abgeleiteten Klasse.

Versiegelt : Die angegebene Klasse kann nicht vererbt werden.

Virtuell : Wird verwendet, um Methoden, Eigenschaften, Indexer oder Ereignisdeklarationen zu dekorieren und das Überschreiben dieser Objekte in abgeleiteten Klassen zu ermöglichen

Überschreiben : Bietet eine neue Implementierung von Mitgliedern, die von der Basisklasse geerbt wurden

Neu : Wird als Modifikator verwendet, um von den Basisklassenmitgliedern geerbte Mitglieder auszublenden. Es ist zulässig, Mitglieder ohne Verwendung des neuen Modifikators auszublenden, es wird jedoch eine Warnung generiert. Wird als Operator zum Erstellen von Objekten und zum Aufrufen von Konstruktoren verwendet.

Extern : Wird verwendet, um eine extern implementierte Methode zu deklarieren. Eine gebräuchliche Verwendung des externen Modifikators ist die Verwendung der DllImport-Funktion, wenn nicht verwalteter Code mithilfe von Interop-Diensten aufgerufen wird. In diesem Fall muss die Methode auch als statisch deklariert werden

Schreibgeschützt : Geändertes Feld, das angibt, dass das Feld schreibgeschützt ist.

Hinweis: Wenn ein Referenztyp schreibgeschützt geändert wird, kann der Status des schreibgeschützten Objekts aufgrund eines fehlerhaften Betriebs geändert werden. Zum Beispiel: Schreibgeschützte Liste <Person> Personen =….;

Möglicherweise haben wir an einigen Stellen Personen geändert: personen.add (neue Person ());

Const : Geändertes Feld, das angibt, dass das Feld schreibgeschützt ist. Außerdem muss es in der Lage sein, den Wert dieses Felds zur Kompilierungszeit klar zu kennen, und sein Wert ist fest im Programm codiert. Nach dem Ändern dieses Typelements müssen Sie erneut kompilieren, damit die Änderung wirksam wird.

Und schreibgeschützt ist zur Laufzeit schreibgeschützt. Der Inhalt wird zur Laufzeit festgelegt. Nach dem Ändern des schreibgeschützten Typmitglieds wird er ohne erneutes Kompilieren wirksam. 

Readonly kann lokale Variablen nicht ändern, const kann.

 

Wichtige Punkte:

  Der Unterschied zwischen Virtual, Override und New

virtual wird in der übergeordneten Klasse verwendet und erklärt, dass eine Methode überschrieben werden kann und die Methode nicht statisch sein kann.

override (Override-Vererbung) wird in Unterklassen verwendet, um die in der übergeordneten Klasse deklarierten Methoden mit dem Schlüsselwort virtual / override / abstract zu überschreiben

new (versteckte Vererbung) wird in Unterklassen verwendet und kann Methoden mit oder ohne virtuelle Deklaration in der übergeordneten Klasse ändern.

  Wenn die übergeordnete Klasse eine Methode mit demselben Namen und demselben Parameter enthält, fügt C # implizit ein neues Schlüsselwort vor der Unterklasse hinzu. 

【Unterschied】 überschreiben und neu

  Wenn Sie der übergeordneten Klasseninstanz eine Unterklasseninstanz zuweisen und die Methode in der Unterklasseninstanz bzw. der übergeordneten Klasseninstanz aufrufen, rufen diejenigen, die mit override geändert wurden, die Unterklassenmethode auf, und diejenigen, die mit new dekoriert sind, rufen die Unterklassenmethode und auf Übergeordnete Methode.

  Die Schlüsselwörter Neu und Überschreiben schließen sich gegenseitig aus. Kann nicht gleichzeitig verwendet werden.  

【Unterschied】 virtuell und abstrakt

  virtuell: Wird in der übergeordneten Klasse verwendet, um zu deklarieren, dass diese Methode überschrieben werden kann.

  abstract: Es kann nur zum Deklarieren abstrakter Methoden in abstrakten Klassen verwendet werden. Es kann keine Funktion selbst implementieren (daher muss es in Unterklassen überschrieben werden) und kann nicht instanziiert werden.

  Es gibt keine andere Beziehung zwischen den beiden, außer dass sie auch durch Überschreiben in Unterklassen überschrieben werden können. 

Ich denke du magst

Origin www.cnblogs.com/hanguoshun/p/12728336.html
Empfohlen
Rangfolge