Čo je uzavretá trieda v C #?

Uzatvorená trieda je trieda, ktorá neumožňuje dedenie, čo znamená, že uzavretá trieda obmedzí používateľov na zdedenie triedy. Uzatvorená trieda definovaná pomocou zapečateného kľúčového slova, ktoré toto kľúčové slovo upozorní kompilátor ako definovaná trieda, je zapečatené, takže ho nemožno rozšíriť a neexistuje žiadna šanca dediť konkrétnu triedu. Uzatvorená trieda obmedzuje triedu odvodenú z uzavretej triedy. Hlavným účelom zapečatenej triedy je zastaviť dedenie špecifickej triedy od iných tried. V C #, pre zabezpečenie nášho kódu, ideme pre zapečatenú triedu, v ktorej môžeme zabezpečiť prevažujúce konkrétne metódy alebo vlastnosti, ktoré závisia od našich podmienok.

Uzatvorená trieda je trieda, v ktorej nemôžeme odvodiť ani vytvoriť novú triedu. Inými slovami, trieda Sealed nemôže byť zdedená inými triedami a pomocou zapečateného modifikátora môžeme tiež definovať triedu, ktorá sa označuje ako trieda Sealed.

syntax

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

kód:

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

Ak chcete vytvoriť akúkoľvek triedu ako zapečatenú triedu, musíme použiť zapečatené kľúčové slovo.

Ako funguje trieda Sealed v jazyku C #?

Všeobecne platí, že pri vytváraní triedy pomocou dedenia zdedíme všetky metódy a vlastnosti v ktorejkoľvek z tried. Použitím zapečatenej triedy môžeme obmedziť prístup do tried a jej členov pomocou zapečateného kľúčového slova a tiež sa môžeme vyhnúť dedeniu definovaných tried od iných tried. V C # je zapečatená trieda trieda, ktorú nemôže zdediť iná trieda, ale je možné ju vytvoriť. Uzatvorená trieda, ktorá sa často používa na bezpečnostné účely, bráni odvodenej triede od nechcených používateľov. Uzatvorená trieda je z väčšej časti navrhnutá tak, aby vymedzovala rozťažnosť tried. Pri práci s triedou Sealed existuje niekoľko bodov:

  • Zapečatená trieda sa úplne líši od abstraktnej triedy.
  • Abstraktné metódy nemožno použiť v zapečatenej triede.
  • V hierarchii dedičstva musí ísť o najspodnejšiu triedu.
  • Uzatvorená trieda sa zámerne používa na zamedzenie dedičstva.
  • Pečatené kľúčové slovo použité s metódami, triedami, vlastnosťami a inštanciou.

Pozrime sa na pracovný proces uzavretej triedy:

kód:

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;
)
)

Výkon:

Ak je trieda definovaná ako zapečatená, potom táto trieda nemôže byť zdedená a tiež túto triedu Sealed nemožno použiť ako základnú triedu. Uzatvorená trieda sa používa hlavne na účely obmedzenia dedičského aspektu OOP.

Zapečatené metódy v C #

Uzatvorené metódy sú definované ako metóda, ktorá je rodičovskou triedou a ktorú nemožno v rámci podradenej triedy prepísať. Ak je metóda deklarovaná ako virtuálna v triede, každá z podriadených tried môže metódu prepísať:

Príklad č. 1

kód:

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();
)
)

Výkon:

Uzatvorený modifikátor môžeme použiť na vlastnosť alebo metódu, ktorá prepíše virtuálnu metódu v základnej triede, čo nám umožňuje povoliť triedam odvodiť sa od triedy a zabezpečiť vývojárom, ktorí používajú triedy, z potlačenia konkrétnych virtuálnych vlastností alebo metód. Existuje niekoľko bodov, ktoré musíme definovať zapečatené triedy, sú:

  • Nikdy nechceme prepísať všetky vlastnosti alebo metódy triedy v podtriedach
  • Nie je potrebné rozširovať naše triedy funkcií.

Príklad č. 2

Hlavným účelom použitia zapečatenej triedy je zabezpečenie dedičstva triedy; nepožadovali sme žiadne triedy na rozšírenie funkčnosti triedy. Pozrime sa na ukážkový program pre uzavretú triedu:

kód:

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();
)
)
)

Ak sa pokúsite odvodiť triedu z uzavretého kompilátora triedy, vyvolá chybu chyby. “TestDerived: nemôže pochádzať z uzavretého typu TestBaseClass”.

Výhody v uzavretej triede

Pozrime sa na nasledujúce dôležité body, ktoré musíme zvážiť o zapečatenom kľúčovom slove v jazyku c #:

  • Z bezpečnostných dôvodov trieda obmedzuje dedičstvo, ak je trieda vyhlásená za zapečatenú triedu.
  • Pokiaľ ide o triedu a metódu, C # uplatňuje obmedzenia pri používaní zapečatených kľúčových slov.
  • Lokálna premenná nie je zapečatená v C #
  • Je vždy použiteľné, keď používate zapísanie kľúčového slova zapečateného pre vlastníctvo alebo metódu.
  • Zapečatený modifikátor sa vyhýba zdedeniu triedy.

záver

Tento článok vám poskytne lepší prehľad o zapečatenej triede a zapečatenej metóde a vysvetlí Sealed Class and Sealed Methods v C # s niekoľkými príkladmi. Dúfam, že tento článok vám pomôže s vašimi požiadavkami.

Odporúčané články

Toto je sprievodca triedou Sealed v C #. Tu diskutujeme o tom, ako zapečatená trieda pracuje v c #, ao metódach v zapečatenej triede s výhodami. Viac informácií nájdete aj v ďalších súvisiacich článkoch -

  1. C # Jagged Arrays
  2. Palindróm v C #
  3. Dedičnosť v C #
  4. Prehlásenie o zlomoch v Jave
  5. Prehlásenie o zlome v JavaScripte
  6. Palindróm v JavaScripte
  7. Hodiť vs Hodí | Top 5 rozdielov, ktoré by ste mali vedieť
  8. Prehlásenie o zlomoch v Pythone s príkladmi

Kategórie: