Co je uzavřená třída v C #?

Uzavřená třída je třída, která neumožňuje dědičnost, což znamená, že uzavřená třída omezí uživatele na zdědění třídy. Uzavřená třída definovaná pomocí zapečetěného klíčového slova, které toto klíčové slovo upozorní kompilátoru jako definovaná třída, je zapečetěno, takže jej nelze rozšířit a neexistuje žádná šance zdědit konkrétní třídu. Uzavřená třída omezuje třídu odvozenou od uzavřené třídy. Hlavním účelem uzavřené třídy je zastavit zdědění určité třídy od jiných tříd. V C #, pro naši bezpečnost kódu, jdeme na zapečetěnou třídu, ve které můžeme zajistit potlačení konkrétních metod nebo vlastností, které závisí na našich podmínkách.

Uzavřená třída je třída, kde nemůžeme odvodit ani vytvořit novou třídu. Jinými slovy, utěsněná třída nemůže být zděděna jinými třídami a pomocí zapečetěného modifikátoru můžeme také definovat třídu, která je označována jako utěsněná třída.

Syntax

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

Kód:

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

Chcete-li vytvořit libovolnou třídu jako uzavřenou třídu, musíme použít klíčové slovo zapečetěné.

Jak funguje Sealed Class v C #?

Obecně platí, že při vytváření třídy pomocí dědičnosti zdědíme všechny metody a vlastnosti v kterékoli ze tříd. Použitím uzavřené třídy můžeme omezit přístup ke třídám a jejich členům pomocí uzavřeného klíčového slova a také se můžeme vyhnout zdědění definovaných tříd od jiných tříd. V C # je uzavřená třída třída, kterou nelze zdědit jinou třídou, ale lze ji konkretizovat. Uzavřená třída často používaná pro účely zabezpečení, která brání odvozené třídě od nežádoucích uživatelů. Uzavřená třída je z velké části navržena tak, aby ohraničovala rozšiřitelnost tříd. Při práci s třídou Sealed existuje několik bodů:

  • Uzavřená třída je zcela odlišná od abstraktní třídy.
  • Abstraktní metody nelze použít v uzavřené třídě.
  • V hierarchii dědičnosti musí být nejspodnější třídou.
  • Uzavřená třída se záměrně používala, aby se zabránilo dědičnosti.
  • Uzavřené klíčové slovo použité s metodami, třídami, vlastnostmi a instancemi.

Podívejme se na pracovní proces utěsněné třídy:

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ýstup:

Pokud je třída definována jako zapečetěná, nemůže být tato třída zděděna a také, že Sealed Class nelze použít jako základní třídu. Uzavřená třída se používá hlavně za účelem omezení dědičnosti aspektu OOP.

Uzavřené metody v C #

Uzavřené metody jsou definovány jako metoda, která je nadřazenou třídou a tuto metodu nelze podřazenou třídou přepsat. Je-li metoda ve třídě deklarována jako virtuální, může některá z podřízených tříd metodu přepsat:

Pří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ýstup:

Můžeme použít zapečetěný modifikátor na vlastnost nebo metodu, která přepíše virtuální metodu v základní třídě, což nám umožňuje povolit třídám odvozovat se od třídy a zabezpečovat vývojáře, kteří používají třídy, z potlačení konkrétních virtuálních vlastností nebo metod. Existuje několik bodů, které musíme definovat zapečetěnou třídu:

  • Nikdy nechceme potlačit všechny vlastnosti nebo metody třídy v podtřídách
  • Není třeba rozšiřovat naše třídní funkce.

Příklad č. 2

Hlavním účelem použití utěsněné třídy je zajistit dědičnost třídy; nepožadovali jsme žádné třídy pro rozšíření funkčnosti třídy. Podívejme se na ukázkový program pro uzavřenou třídu:

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

Když se pokusíte odvodit třídu z uzavřeného kompilátoru třídy, vyvolá chybu chyby. “TestDerived: nelze odvodit z uzavřeného typu TestBaseClass”.

Výhody v uzavřené třídě

Podívejme se na následující důležité body, které musíme zvážit ohledně zapečetěného klíčového slova v jazyce c #:

  • Z bezpečnostních důvodů třída omezuje dědičnost, pokud je třída deklarována jako uzavřená třída.
  • Pro třídu a metodu platí C # při použití zapečetěných klíčových slov.
  • Místní proměnná není zapečetěna v C #
  • Je vždy použitelné při použití přepisu pro zapečetěné klíčové slovo pro vlastnost nebo metodu.
  • Uzavřený modifikátor se vyhýbá zděděné třídě.

Závěr

Tento článek vám poskytne lepší pohled na zapečetěnou třídu a zapečetěnou metodu a vysvětlí metody utěsněné třídy a utěsněné metody v C # s několika příklady. Doufám, že tento článek vám pomůže s vaším požadavkem.

Doporučené články

Toto je průvodce Sealed Class v C #. Zde diskutujeme, jak uzavřená třída pracuje v c #, a metody v uzavřené třídě s výhodami. Další informace naleznete také v dalších souvisejících článcích -

  1. C # Jagged Arrays
  2. Palindrom v C #
  3. Dědičnost v C #
  4. Prohlášení o zlomu v Javě
  5. Prohlášení o zlomu v JavaScript
  6. Palindrom v JavaScriptu
  7. Throw vs Throw | 5 hlavních rozdílů, které byste měli vědět
  8. Prohlášení o přerušení v Pythonu s příklady

Kategorie: