Що таке герметичний клас у C #?

Запечатаний клас - це клас, який не дозволяє успадкувати, а це означає, що клас "Запечатаний" обмежує користувачів успадкувати клас. Запечатаний клас, визначений за допомогою запечатаного ключового слова, це ключове слово сповіщає компілятор, як визначений клас запечатаний, так що його неможливо розширити і немає шансів успадкувати певний клас. Клас "Запечатаний" обмежує клас, похідний із класу "Запечатаний". Основна мета закритого класу - припинити успадковувати певний клас від інших класів. В C #, для безпеки коду, ми використовуємо герметичний клас, в якому ми можемо забезпечити переосмислення конкретних методів чи властивостей залежно від наших умов.

Клас Sealed - це клас, в якому ми не можемо отримати або створити новий клас. Іншими словами, запечатаний клас не може бути успадкований іншими класами, і за допомогою герметичного модифікатора ми також можемо визначити клас, який оголошується називаним закритим класом.

Синтаксис

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

Код:

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

Щоб створити будь-який клас як герметичний клас, ми повинні використовувати ключове слово запечатаний.

Як працює закритий клас у C #?

Загалом, створюючи клас за допомогою спадкування, ми успадковуємо всі методи та властивості в будь-якому з класів. Використовуючи закритий клас, ми можемо обмежити доступ до класів та його членів за допомогою запечатаного ключового слова, а також ми можемо уникнути успадкування визначених класів від інших класів. У C # герметичний клас - це клас, який не може бути успадкований іншим класом, але він може бути інстанційним. Запечатаний клас, який часто використовується з метою безпеки, щоб запобігти похідному класу від небажаних користувачів. Запечатаний клас здебільшого призначений для обмеження лінії розширюваності класів. Під час роботи з класом Sealed є кілька моментів, це:

  • Запечатаний клас повністю відрізняється від абстрактного класу.
  • Абстрактні методи не можна використовувати в закритому класі.
  • У ієрархії спадкування це повинен бути найнижчий клас.
  • Опечатаний клас цілеспрямовано використовується для уникнення спадкування.
  • Запечатане ключове слово, що використовується з методами, класами, властивостями та екземпляром.

Давайте розглянемо робочий процес герметичного класу:

Код:

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

Вихід:

Коли клас визначений як запечатаний, то цей клас не може бути успадкований, а також, що клас Sealed не може бути використаний як базовий клас. Запечатаний клас в основному використовується з метою обмеження аспекту спадкування OOP.

Запечатані методи в C #

Запечатані методи визначаються так, що метод є батьківським класом і цей метод не може бути замінений під дочірнім класом. Коли метод оголошено віртуальним у класі, будь-який з дочірніх класів може замінити метод:

Приклад №1

Код:

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

Вихід:

Ми можемо використовувати герметичний модифікатор у властивості чи методі, який переосмислює віртуальний метод у базовому класі, що дозволяє нам дозволяти класам виходити з класу та захищати розробників, які використовують класи від перекриття певних віртуальних властивостей чи методів. Є кілька моментів, які ми повинні визначити запечатаним класом:

  • Ми ніколи не хочемо змінювати всі властивості або методи класу в підкласах
  • Немає необхідності розширювати наші класні функції.

Приклад №2

Основна мета використання герметичного класу - забезпечення спадкування класу; нам не потрібні будь-які класи для розширення функціональності класу. Давайте подивимося зразкову програму для герметичного класу:

Код:

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

При спробі отримати клас із запечатаного компілятора класів видає помилку помилки. "TestDerived: не може вийти з герметичного типу TestBaseClass".

Переваги у герметичному класі

Давайте подивимось на наступні важливі моменти, які ми повинні врахувати щодо запечатаного ключового слова на мові c #:

  • З метою безпеки клас обмежує успадкування, якщо клас оголошено герметичним класом.
  • Для класу та методу C # застосовує обмеження під час використання запечатаних ключових слів.
  • Локальна змінна не запечатана в C #
  • Це завжди застосовано, коли використовується переопределення для запечатаного ключового слова у властивості чи методі.
  • Запечатаний модифікатор дозволяє уникнути спадкування класу.

Висновок

Ця стаття дасть вам кращий огляд запечатаного класу та запечатаного методу та пояснить методи закритого класу та запечатані в C # з кількома прикладами. Сподіваюся, ця стаття допоможе вам у виконанні ваших вимог.

Рекомендовані статті

Це посібник із Опечатаного класу на C #. Тут ми обговорюємо, як працює герметичний клас у c #, та методи, що містяться у закритому класі з перевагами. Ви також можете ознайомитись з іншими нашими пов’язаними статтями, щоб дізнатися більше -

  1. C # Зазубрені масиви
  2. Паліндром в C #
  3. Спадщина в C #
  4. Заява про перерву в Java
  5. Заява про перерву в JavaScript
  6. Паліндром у JavaScript
  7. Киньте проти кидок | Топ 5 відмінностей, які ви повинні знати
  8. Заява про перерву в Python з прикладами