Explication détaillée du rôle du mot-clé scellé en C#

伊谢尔伦
Libérer: 2017-04-29 14:43:36
original
2046 Les gens l'ont consulté

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( ) 
{ //... } 
}
Copier après la connexion



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") ; 
} 
}
Copier après la connexion


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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!