C# | Sealed Class - GeeksforGeeks

01 Oct, 2021
Sealed classes are used to restrict the users from inheriting the class. A class can be sealed by using the sealed keyword. The keyword tells the compiler that the class is sealed, and therefore, cannot be extended. No class can be derived from a sealed class.
The following is the syntax of a sealed class : 
sealed class class_name
{
    // data members
    // methods
    .
    .
    .

}
A method can also be sealed, and in that case, the method cannot be overridden. However, a method can be sealed in the classes in which they have been inherited. If you want to declare a method as sealed, then it has to be declared as virtual in its base class.
The following class definition defines a sealed class in C#:
In the following code, create a sealed class SealedClass and use it from Program. If you run this code then it will work fine.  
C#
// C# code to define// a Sealed Classusing System; // Sealed classsealed class SealedClass {     // Calling Function    public int Add(int a, int b)    {        return a + b;    }} class Program {     // Main Method    static void Main(string[] args)    {         // Creating an object of Sealed Class        SealedClass slc = new SealedClass();         // Performing Addition operation        int total = slc.Add(6, 4);        Console.WriteLine("Total = " + total.ToString());    }}
Output : 
Total = 10
Now, if it is tried to inherit a class from a sealed class then an error will be produced stating that ” It cannot be derived from a Sealed class.
C#
// C# code to show restrictions// of a Sealed Classusing System; class Bird { } // Creating a sealed classsealed class Test : Bird {} // Inheriting the Sealed Classclass Example : Test {} // Driver Classclass Program {     // Main Method    static void Main()    {    }}
Error:
Error CS0509 ‘Example’ : cannot derive from sealed type ‘Test’
Consider the following example of a sealed method in a derived class : 
C#
// C# program to// define Sealed Classusing System; class Printer {     // Display Function for    // Dimension printing    public virtual void show()    {        Console.WriteLine("display dimension : 6*6");    }     // Display Function    public virtual void print()    {        Console.WriteLine("printer printing....\n");    }} // inheriting classclass LaserJet : Printer {     // Sealed Display Function    // for Dimension printing    sealed override public void show()    {        Console.WriteLine("display dimension : 12*12");    }     // Function to override    // Print() function    override public void print()    {        Console.WriteLine("Laserjet printer printing....\n");    }} // Officejet class cannot override show// function as it is sealed in LaserJet class.class Officejet : LaserJet {     // can not override show function or else    // compiler error : 'Officejet.show()' :    // cannot override inherited member    // 'LaserJet.show()' because it is sealed.    override public void print()    {        Console.WriteLine("Officejet printer printing....");    }} // Driver Classclass Program {     // Driver Code    static void Main(string[] args)    {        Printer p = new Printer();        p.show();        p.print();         Printer ls = new LaserJet();        ls.show();        ls.print();         Printer of = new Officejet();        of.show();        of.print();    }}
Output : 
display dimension : 6*6
Printer printing....

display dimension : 12*12
LaserJet printer printing....

display dimension : 12*12
Officejet printer printing....
Explanation: In above C# code, Printer class has display unit with the dimension of 6*6 and LaserJet class have implemented the show method by overriding it to have the dimension of 12*12. If any class will inherit LaserJet class then it will have the same dimension of 12*12 and can’t implement its own i.e. it cannot have 15*15, 16*16 or any other dimensions. So, LaserJet call will seal the show method to prevent further overriding of it.
Why Sealed Classes? 
Sealed class is used to stop a class to be inherited. You cannot derive or extend any class from it.
Sealed method is implemented so that no other class can overthrow it and implement its own method.
The main purpose of the sealed class is to withdraw the inheritance attribute from the user so that they can’t attain a class from a sealed class. Sealed classes are used best when you have a class with static members. e.g the “Pens” and “Brushes” classes of the System.Drawing namespace. The Pens class represents the pens for standard colors. This class has only static members. For example, “Pens.Red” represents a pen with red color. Similarly, the “Brushes” class represents standard brushes. “Brushes.Red” represents a brush with red color.
 
gabaa406
CSharp-OOP
C#
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
C# Dictionary with examples
C# | Delegates
Top 50 C# Interview Questions & Answers
Extension Method in C#
Introduction to .NET Framework
C# | String.IndexOf( ) Method | Set - 1
Different ways to sort an array in descending order in C#
Common Language Runtime (CLR) in C#
HashSet in C# with Examples
C# | Replace() Method