Wat is een verzegelde klasse in C #?

Een Verzegelde Klasse is een klasse die geen overerving toestaat, wat betekent dat de Verzegelde Klasse gebruikers zal beperken om een ​​klasse te erven. Een verzegelde klasse die is gedefinieerd met behulp van een verzegeld trefwoord, dat trefwoord meldt de compiler zoals de gedefinieerde klasse is verzegeld, zodat deze niet kan worden uitgebreid en er geen kans is om een ​​specifieke klasse te erven. Verzegelde klasse beperkt een klasse afgeleid van een verzegelde klasse. Het hoofddoel van de verzegelde klasse is om te stoppen met het erven van de specifieke klasse van andere klassen. In C # gaan we voor onze codebeveiliging voor een verzegelde klasse, waarin we ervoor kunnen zorgen dat bepaalde methoden of eigenschappen worden genegeerd, afhankelijk van onze voorwaarden.

Een verzegelde klasse is een klasse waaraan we geen nieuwe klasse kunnen ontlenen of creëren. Met andere woorden, de Verzegelde Klasse kan niet worden geërfd door andere klassen en door een verzegelde modificator te gebruiken, kunnen we ook een klasse definiëren die wordt aangeduid als Verzegelde Klasse.

Syntaxis

sealed class _className
(
//data members
//methods
)

Code:

sealed class Demo1 ()
class Demo2 : Demo1() //invalid

Om een ​​klasse als een verzegelde klasse te maken, moeten we het trefwoord verzegeld gebruiken.

Hoe werkt Sealed Class in C #?

Over het algemeen erven we bij het maken van een klasse met behulp van overerving alle methoden en eigenschappen in een van de klassen. Door verzegelde klassen te gebruiken, kunnen we de toegang tot de klassen en haar leden beperken met behulp van een verzegeld trefwoord en kunnen we ook voorkomen dat de gedefinieerde klassen van andere klassen worden geërfd. In C # is een verzegelde klasse een klasse die niet door een andere klasse kan worden geërfd, maar wel kan worden geïnstantieerd. Verzegelde klasse die vaak wordt gebruikt voor beveiligingsdoeleinden om te voorkomen dat de afgeleide klasse ongewenste gebruikers is. Een verzegelde klasse is grotendeels ontworpen om de uitbreidbaarheid van de klassen te begrenzen. Er zijn verschillende punten tijdens het werken met Sealed Class, dit zijn:

  • Een verzegelde klasse is heel anders dan een abstracte klasse.
  • Abstracte methoden kunnen niet worden gebruikt in een verzegelde klasse.
  • In de overervinghiërarchie moet dit de laagste klasse zijn.
  • Verzegelde klasse met opzet gebruikt om overerving te voorkomen.
  • Het verzegelde sleutelwoord dat wordt gebruikt met methoden, klassen, eigenschappen en instantie.

Laten we het werkproces van Sealed Class eens bekijken:

Code:

using System;
public class DemoClass
(
public static void Main (string() args)
(
SealedDemo _sealedObject=new SealedDemo();
int result=_sealedObject.Addition(5, 5);
Console.WriteLine("Total Value="+result.ToString());
)
) //sealedClass starts here
sealed class SealedDemo
(
public int Addition(int x, int y)
(
return x+y;
)
)

Output:

Wanneer de klasse is gedefinieerd als verzegeld, kan die klasse niet worden geërfd en kan die verzegelde klasse niet worden gebruikt als de basisklasse. Verzegelde klasse wordt hoofdzakelijk gebruikt om het overervingsaspect van OOP te beperken.

Verzegelde methoden in C #

Verzegelde methoden worden gedefinieerd omdat de methode een bovenliggende klasse is en die methode niet kan worden genegeerd onder de onderliggende klasse. Wanneer de methode in een klas virtueel wordt verklaard, kan elk van de onderliggende klassen een methode overschrijven:

Voorbeeld 1

Code:

using System;
public class Sample_Employee
(
protected int Emp_id, Emp_age;
protected string Emp_name, Emp_address;
public virtual void GetEmployeeDetails()
(
Console.WriteLine("EMPLOYEE DETAILS");
Console.WriteLine("EMPLOYEE ID");
Emp_id = int.Parse(Console.ReadLine());
Console.WriteLine("EMPLOYEE NAME");
Emp_name = Console.ReadLine();
Console.WriteLine("EMPLOYEE ADDRESS");
Emp_address = Console.ReadLine();
Console.WriteLine("EMPLOYEE AGE");
Emp_age = int.Parse(Console.ReadLine());
)
public virtual void DisplayEmployeeDetails()
(
Console.WriteLine("\nEMPLOEE DETAILS:");
Console.WriteLine("EMPLOYEE ID : " + Emp_id);
Console.WriteLine("EMPLOYEE NAME : " + Emp_name);
Console.WriteLine("EMPLOYEE ADDRESS :" + Emp_address);
Console.WriteLine("EMPLOYEE AGE : " + Emp_age);
)
)
public sealed class Emp_Manager : Sample_Employee
(
double Bonus, CA;
public override void GetEmployeeDetails()
(
Console.WriteLine("ENTER MANAGER DETAILS:");
Console.WriteLine("ENTER THE ID");
Emp_id = int.Parse(Console.ReadLine());
Console.WriteLine("ENTER THE NAME");
Emp_name = Console.ReadLine();
Console.WriteLine("ENTER THE BONUS");
Bonus = double.Parse(Console.ReadLine());
Console.WriteLine("ENTER THE CA");
CA = Convert.ToDouble(Console.ReadLine());
)
public override void DisplayEmployeeDetails()
(
Console.WriteLine("MANAGER DETAILS");
Console.WriteLine("EMPLOYEE ID: " + Emp_id);
Console.WriteLine("EMPLOYEE NAME: " + Emp_name);
Console.WriteLine("MANAGER BONUS: " + Bonus);
Console.WriteLine("MANAGER CA : " + CA);
)
)
class Program
(
static void Main(string() args)
(
Emp_Manager m1 = new Emp_Manager ();
m1.GetEmployeeDetails();
m1.DisplayEmployeeDetails();
Console.ReadKey();
)
)

Output:

We kunnen een verzegelde modifier gebruiken voor een eigenschap of methode die de virtuele methode in de basisklasse overschrijft, waardoor we klassen kunnen laten afleiden van klasse en ontwikkelaars die klassen gebruiken beveiligen tegen het overschrijven van bepaalde virtuele eigenschappen of methoden. Er zijn een paar punten die we moeten definiëren verzegelde klasse zijn:

  • We willen nooit alle eigenschappen of methoden van een klasse in subklassen overschrijven
  • Het is niet nodig om onze klassenfunctionaliteit uit te breiden.

Voorbeeld 2

Het belangrijkste doel van het gebruik van een verzegelde klasse is het beveiligen van de erfenis van een klasse; we hebben geen klassen nodig om de functionaliteit van een klasse te vergroten. Laten we het voorbeeldprogramma voor de verzegelde klasse bekijken:

Code:

using System;
using System.Text;
namespace test_SealedClass
(
public class SampleProgram1
(
public sealed class TestBaseClass
(
public static void TestDisplay()
(
Console.WriteLine("Here the SealedClass cannot be inherited");
)
)
public class TestDerived : TestBaseClass
(
// here Derived class cannot be inherited because it's a sealed class
)
static void Main(string() args)
(
TestBaseClass _object = new TestBaseClass();
_object.TestDisplay();
Console.ReadLine();
)
)
)

Wanneer u probeert een klasse af te leiden van een verzegelde klassencompiler, geeft dit een foutfout. "TestDerived: kan niet worden afgeleid van het verzegelde type TestBaseClass".

Voordelen in verzegelde klasse

Laten we de volgende belangrijke punten bekijken die we moeten overwegen over het verzegelde zoekwoord in de taal c #:

  • Om veiligheidsredenen beperkt een klasse overerving als een klasse als een verzegelde klasse wordt verklaard.
  • Voor de klasse en methode hanteert C # beperkingen bij het gebruik van verzegelde zoekwoorden.
  • De lokale variabele is niet verzegeld in C #
  • Het is altijd van toepassing bij het gebruik van opheffing voor het verzegelde zoekwoord op eigenschap of methode.
  • Een verzegelde modifier voorkomt dat een klasse wordt geërfd.

Conclusie

Dit artikel geeft u een beter beeld van de verzegelde klasse en verzegelde methode en legde de verzegelde klasse en verzegelde methoden in C # uit met enkele voorbeelden. Ik hoop dat dit artikel je helpt met je behoefte.

Aanbevolen artikelen

Dit is een gids voor Sealed Class in C #. Hier bespreken we hoe verzegelde klasse in c # werkt, en methoden in de verzegelde klasse met voordelen. U kunt ook onze andere gerelateerde artikelen doornemen voor meer informatie -

  1. C # Jagged Arrays
  2. Palindrome in C #
  3. Overerving in C #
  4. Break Statement in Java
  5. Break Statement in JavaScript
  6. Palindrome in JavaScript
  7. Gooien versus Gooien | Top 5 verschillen die u moet weten
  8. Break Statement in Python met voorbeelden