Що таке герметичний клас у 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 #, та методи, що містяться у закритому класі з перевагами. Ви також можете ознайомитись з іншими нашими пов’язаними статтями, щоб дізнатися більше -
- C # Зазубрені масиви
- Паліндром в C #
- Спадщина в C #
- Заява про перерву в Java
- Заява про перерву в JavaScript
- Паліндром у JavaScript
- Киньте проти кидок | Топ 5 відмінностей, які ви повинні знати
- Заява про перерву в Python з прикладами