Что такое запечатанный класс в C #?

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

Запечатанный класс - это класс, в котором мы не можем получить или создать новый класс. Другими словами, Запечатанный класс не может быть унаследован другими классами, и с помощью модификатора запечатанного мы также можем определить класс, который объявлен как Запечатанный класс.

Синтаксис

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

Код:

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

Чтобы создать любой класс как запечатанный класс, мы должны использовать ключевое слово sealed.

Как работает Sealed Class в C #?

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

  • Запечатанный класс полностью отличается от абстрактного класса.
  • Абстрактные методы нельзя использовать в запечатанном классе.
  • В иерархии наследования это должен быть самый нижний класс.
  • Запечатанный класс специально используется, чтобы избежать наследования.
  • Ключевое слово 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;
)
)

Выход:

Когда класс определяется как закрытый, этот класс не может быть унаследован, а также этот закрытый класс не может использоваться в качестве базового класса. Запечатанный класс в основном используется с целью ограничения наследования ООП.

Запечатанные методы в 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 #
  • Это всегда применимо при использовании переопределения для ключевого слова sealed для свойства или метода.
  • Запечатанный модификатор избегает наследования класса.

Вывод

Эта статья даст вам лучшее представление о запечатанном классе и запечатанном методе и объяснит Запечатанный класс и Запечатанные методы в C # с несколькими примерами. Надеюсь, эта статья поможет вам с вашим требованием.

Рекомендуемые статьи

Это руководство по Запечатанному Классу в C #. Здесь мы обсудим, как запечатанный класс работает в c #, и методы в запечатанном классе с преимуществами. Вы также можете просмотреть другие наши статьи, чтобы узнать больше -

  1. C # Jagged Arrays
  2. Палиндром в C #
  3. Наследование в C #
  4. Оператор разрыва в Java
  5. Оператор разрыва в JavaScript
  6. Палиндром в JavaScript
  7. Бросок против бросков | 5 главных отличий, которые вы должны знать
  8. Оператор разрыва в Python с примерами