Versiegelte C#-Klasse und -Methode
C#-versiegelte Klasse und Methode
In diesem Tutorial lernen wir die versiegelte Klasse und Methode in C# anhand von Beispielen kennen.
Sealed-Klasse
Wenn wir in C# nicht möchten, dass eine Klasse von einer anderen Klasse geerbt wird, können wir die Klasse als versiegelte Klasse deklarieren .
Eine versiegelte Klasse kann keine abgeleitete Klasse haben. Wir verwenden den sealed
Schlüsselwort, um eine versiegelte Klasse zu erstellen. Zum Beispiel
using System;
namespace SealedClass {
sealed class Animal {
}
// trying to inherit sealed class
// Error Code
class Dog : Animal {
}
class Program {
static void Main (string [] args) {
// create an object of Dog class
Dog d1 = new Dog();
Console.ReadLine();
}
}
}
Im obigen Beispiel haben wir eine versiegelte Klasse Animal erstellt . Hier versuchen wir, Dog abzuleiten Klasse von Animal Klasse.
Da eine versiegelte Klasse nicht vererbt werden kann, generiert das Programm den folgenden Fehler:
error CS0509: 'Dog': cannot derive from sealed type 'Animal'
Versiegelte Methode
Wenn wir beim Überschreiben von Methoden nicht möchten, dass eine überschriebene Methode weiter von einer anderen Klasse überschrieben wird, können wir sie als versiegelte Methode deklarieren .
Wir verwenden einen sealed
Schlüsselwort mit einer überschriebenen Methode, um eine versiegelte Methode zu erstellen. Zum Beispiel
using System;
namespace SealedClass {
class Animal {
public virtual void makeSound() {
Console.WriteLine("Animal Sound");
}
}
class Dog : Animal {
// sealed method
sealed public override void makeSound() {
Console.WriteLine("Dog Sound");
}
}
class Puppy : Dog {
// trying to override sealed method
public override void makeSound() {
Console.WriteLine("Puppy Sound");
}
}
class Program {
static void Main (string [] args) {
// create an object of Puppy class
Puppy d1 = new Puppy();
Console.ReadLine();
}
}
}
Im obigen Beispiel haben wir makeSound() überschrieben -Methode innerhalb von Dog Klasse.
// Inside the Dog class
sealed public override void makeSound() {
Console.WriteLine("Dog Sound");
}
Beachten Sie, dass wir den sealed
verwendet haben Schlüsselwort mit makeSound() . Gemeint ist der Welpe Klasse, die den Hund erbt Klasse darf makeSound() nicht überschreiben .
Daher erhalten wir einen Fehler
error CS0239: 'Puppy.makeSound()': cannot override inherited member 'Dog.makeSound()' because it is sealed
wenn wir versuchen, makeSound() weiter zu überschreiben -Methode innerhalb des Puppy Klasse.
Hinweis :Das Versiegeln einer überschriebenen Methode verhindert das Überschreiben der Methode bei der mehrstufigen Vererbung.
Warum Sealed-Klasse?
1. Wir verwenden versiegelte Klassen, um Vererbung zu verhindern. Da wir nicht von einer versiegelten Klasse erben können, können die Methoden in der versiegelten Klasse nicht von anderen Klassen manipuliert werden.
Es hilft, Sicherheitsprobleme zu vermeiden. Zum Beispiel
sealed class A {
...
}
// error code
class B : A {
...
}
Als Klasse A nicht vererbbar, Klasse B kann die Methoden der Klasse A nicht überschreiben und manipulieren .
2. Eine der besten Verwendungen von versiegelten Klassen ist, wenn Sie eine Klasse mit statischen Membern haben.
Die Stifte Klasse der System.Drawing
Namespace ist eines der Beispiele für die versiegelte Klasse. Die Stifte Die Klasse hat statische Member, die die Stifte mit Standardfarben darstellen. Pens.Blue
stellt einen Stift mit blauer Farbe dar.
C Sprache
- C#-Klasse und -Objekt
- Abstrakte C#-Klasse und -Methode
- C# Teilklasse und Teilmethode
- C++-Klassen und -Objekte
- C++ Friend-Funktion und Friend-Klassen
- Java - Objekt und Klassen
- C# - Vererbung
- C# - Polymorphismus
- ASTM A729 Klasse A doppelt normalisiert und angelassen
- ASTM A649 Klasse 2 normalisiert und angelassen