C# verzegelde klasse en methode
C# verzegelde klasse en methode
In deze tutorial leren we over de verzegelde klasse en methode in C# met behulp van voorbeelden.
Verzegelde klasse
Als we in C# niet willen dat een klasse wordt overgenomen door een andere klasse, kunnen we de klasse declareren als een verzegelde klasse .
Een verzegelde klasse kan geen afgeleide klasse hebben. We gebruiken de sealed
trefwoord om een verzegelde klasse te maken. Bijvoorbeeld,
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();
}
}
}
In het bovenstaande voorbeeld hebben we een verzegelde klasse gemaakt Animal . Hier proberen we Hond . af te leiden klasse van het Dier klasse.
Aangezien een verzegelde klasse niet kan worden overgenomen, genereert het programma de volgende fout:
error CS0509: 'Dog': cannot derive from sealed type 'Animal'
Verzegelde methode
Als we tijdens het overschrijven van een methode niet willen dat een overschreven methode verder wordt overschreven door een andere klasse, kunnen we deze declareren als een verzegelde methode .
We gebruiken een sealed
trefwoord met een overschreven methode om een verzegelde methode te creëren. Bijvoorbeeld,
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();
}
}
}
In het bovenstaande voorbeeld hebben we de makeSound() . overschreven methode binnen de Hond klasse.
// Inside the Dog class
sealed public override void makeSound() {
Console.WriteLine("Dog Sound");
}
Merk op dat we de sealed
. hebben gebruikt trefwoord met makeSound() . Dit betekent dat de Puppy klasse die de Hond . erft class mag makeSound() niet overschrijven .
Daarom krijgen we een foutmelding
error CS0239: 'Puppy.makeSound()': cannot override inherited member 'Dog.makeSound()' because it is sealed
wanneer we proberen de makeSound() . verder te overschrijven methode binnen de Puppy klas.
Opmerking :Het verzegelen van een overschreven methode voorkomt dat de methode wordt overschreven bij overerving op meerdere niveaus.
Waarom Sealed Class?
1. We gebruiken verzegelde klassen om overerving te voorkomen. Omdat we niet kunnen erven van een verzegelde klasse, kunnen de methoden in de verzegelde klasse niet worden gemanipuleerd van andere klassen.
Het helpt beveiligingsproblemen te voorkomen. Bijvoorbeeld,
sealed class A {
...
}
// error code
class B : A {
...
}
Als klasse A kan niet worden geërfd, klasse B kan de methoden van klasse A niet overschrijven en manipuleren .
2. Een van de beste toepassingen van verzegelde klassen is wanneer je een klas hebt met statische leden.
De pennen klasse van de System.Drawing
namespace is een van de voorbeelden van de verzegelde klasse. De pennen klasse heeft statische leden die de pennen met standaardkleuren vertegenwoordigen. Pens.Blue
staat voor een pen met blauwe kleur.
C Taal
- C# klasse en object
- C# abstracte klasse en methode
- C# Gedeeltelijke klasse en gedeeltelijke methode
- C++ klassen en objecten
- C++ vriend Functie en vriend Klassen
- Java - Object en klassen
- C# - Overerving
- C# - Polymorfisme
- ASTM A729 Klasse A dubbel genormaliseerd en gehard
- ASTM A649 Klasse 2 genormaliseerd en gehard
- ASTM A288 klasse 4 gedoofd en getemperd