Maison > Article > développement back-end > Explication détaillée du rôle du mot-clé scellé en C#
Scellé en chinois signifie scellé, donc le nom suggère que la classe ou la méthode modifiée par celui-ci ne peut pas être héritée ou remplacée.
Le rôle du mot-clé seal :
L'utilisation de seal dans une déclaration de classe empêche d'autres classes d'hériter de cette classe ; l'utilisation du modificateur seal dans une déclaration de méthode empêche les classes étendues de la remplacer ; méthode de classe.
Le modificateur scellé est principalement utilisé pour empêcher toute dérivation involontaire, mais il peut également favoriser certaines optimisations d'exécution. Plus précisément, étant donné qu'une classe scellée n'aura jamais de classes dérivées, les appels aux fonctions virtuelles membres des instances de la classe scellée peuvent être convertis en appels non virtuels pour traitement.
Classe scellée :
Une classe scellée utilise le modificateur scellé dans sa déclaration pour empêcher la classe d'être héritée par d'autres classes. Si vous essayez d’utiliser une classe scellée comme classe de base pour d’autres classes, C# affichera une erreur. Bien entendu, une classe scellée ne peut pas être en même temps une classe abstraite, car les abstractions veulent toujours être héritées.
Dans quelles situations les scellés sont-ils utilisés ? En fait, il est impossible d’avoir une classe dérivée au sein d’une classe scellée. Si une fonction membre virtuelle existe dans une instance de classe scellée, la fonction membre peut être convertie en fonction non virtuelle et le modificateur de fonction virtual ne prendra plus effet.
Regardons l'exemple suivant :
abstract class AbstractClass { public abstract void Method( ) ; } sealed class SealedClass: AbstractClass { public override void Method( ) { //... } }
Si on essaie d'écrire le code suivant
class OtherClass : SealedClass
{
}
C# signalera cette erreur et vous dira que SealedClass est une classe scellée et que vous ne pouvez pas essayer de dériver une classe de SealedClass.
Méthode scellée :
C# propose également le concept de méthode scellée (sealedmethod) pour éviter que la méthode soit surchargée dans les classes dérivées de la classe où se trouve la méthode. Vous pouvez utiliser le modificateur scellé sur une méthode, nous appelons alors la méthode une méthode scellée.
Toutes les méthodes membres d'une classe ne peuvent pas être utilisées comme méthode scellée. Pour être utilisée comme méthode scellée, la méthode virtuelle de la classe de base doit être surchargée et une méthode d'implémentation spécifique doit être fournie. Par conséquent, dans une déclaration de méthode, le modificateur scellé est toujours utilisé avec le modificateur override. Veuillez regarder l'exemple de code suivant :
using System ; class A { public virtual void F( ) { Console.WriteLine("A.F") ; } public virtual void G( ) { Console.WriteLine("A.G") ; } } class B: A { sealed override public void F( ) { Console.WriteLine("B.F") ; } override public void G( ) { Console.WriteLine("B.G") ; } } class C: B { override public void G( ) { Console.WriteLine("C.G") ; } }
La classe B surcharge les deux méthodes virtuelles dans la classe de base A. La méthode F utilise le modificateur scellé et devient une méthode scellée. La méthode G n'est pas une méthode scellée, donc dans la classe dérivée C de B, la méthode G peut être surchargée, mais la méthode F ne peut pas être surchargée
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!