Какво представлява запечатан клас в C #?

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

Запечатан клас е клас, в който не можем да извлечем или създадем нов клас. С други думи, Sealed Class не може да бъде наследен от други класове и с помощта на запечатан модификатор можем също да определим клас, който се декларира като Sealed Class.

Синтаксис

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

Код:

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

За да създадем всеки клас като запечатан клас, трябва да използваме ключовата дума запечатан.

Как работи запечатаният клас в C #?

Като цяло, докато създаваме клас с помощта на наследяване, наследяваме всички методи и свойства във всеки от класовете. Използвайки запечатан клас, можем да ограничим достъпа до класовете и членовете му с помощта на запечатана ключова дума и също така можем да избегнем наследяването на дефинираните класове от други класове. В C #, запечатан клас е клас, който не може да бъде наследен от друг клас, но може да бъде инстанциран. Запечатан клас, често използван за целите на сигурността, за да предотврати получения клас от нежелани потребители. Запечатан клас е в по-голямата си част предназначен да ограничи границата на разтегливостта на класовете. Има няколко точки по време на работа с Sealed Class, те са:

  • Запечатан клас е напълно различен от абстрактния клас.
  • Абстрактните методи не могат да се използват в запечатан клас.
  • В йерархията на наследството тя трябва да е най-долният клас.
  • Запечатан клас, преднамерено използван, за да се избегне наследяването.
  • Запечатаната ключова дума, използвана с методи, класове, свойства и инстанция.

Нека видим работния процес на запечатан клас:

Код:

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 Class не може да бъде използван като базов клас. Запечатан клас се използва главно с цел ограничаване на аспекта на наследяване на 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 с примери