Sealed v/s Abstract Classes
Tags: csharp, dotnet, oop, todayilearned
Published: 2021-05-12 12:40:09


The article demonstrates the use of abstract and sealed class

## Learning Objectives

* What is a Sealed class

* What is an Abstract class

## Prerequisites

Require a basic understanding of OOPS concepts.

## Getting Started

### Sealed Class

The sealed keyword permits restriction of the inheritance of a class or its members.

To mark a class as **sealed**, put the keyword **sealed** before the class definition. For example:

    public sealed class D {
       // Class members here.
    }

Sealed classes prevent derivation as they cannot act as a base class.

### Common Usage of Sealed Class

Any method, indexer, property, or event on a derived class overriding a virtual member of the base class can declare that member sealed. It negates the virtual aspect of the member for any further inheritance. Simply putting a sealed keyword before the override keyword in the class member declaration. For example:

    public class D : C {     
       public sealed override void Do() { } 
    }

### Abstract Class

The abstract keyword permits creating classes and members that are incomplete and needs implementation in a derived class.

To mark a class as **abstract**, put the keyword **abstract** before the class definition. For example:

    public abstract class A {     
       // Class members here. 
    }

An abstract class cannot be initialized, i.e., no object creation is allowed for that class. An abstract class aims to provide a standard definition of a base class that multiple derived classes can share via inheritance.

Abstract classes can also consist of abstract methods. Accomplished by adding the keyword abstract before the return type of the method. For example:

    public abstract class A {     
        public abstract void Do(int i); 
    }

### Common Usage of Abstract Class

For example, a class lib defines an abstract class used as a parameter to many of its functions and requires programmers to use that lib to provide their implementation by creating a derived class.

### Abstract v/s virtual Use Case

Abstract methods also have no implementation, so the method is followed by a semicolon. Derived classes of the abstract class must complete all abstract methods. But when an abstract class inherits a virtual method from a base class, the derived abstract class can override the virtual with an abstract method. For example:

    public class D
    {
        public virtual void Do(int i)
        {
            // Original implementation.
        }
    }

    public abstract class E : D
    {
        public abstract override void Do(int i);
    }

    public class F : E
    {
        public override void Do(int i)
        {
            // New implementation.
        }
    }

Thank you for reading. Keep visiting and share this in your network. Please put your thoughts and feedback in the comments section.

Follow me on [LinkedIn](https://www.linkedin.com/in/sukhpinder-singh-532284a2/) [Instagram](https://www.instagram.com/sukhpindersukh/) [Facebook](https://www.facebook.com/sukhpinder.singh.52/) [Twitter](https://twitter.com/sukhsukhpinder)

<a href="https://www.buymeacoffee.com/sukhpindersingh" target="_blank"><img src="https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png" alt="Buy Me A Coffee" style="height: 41px !important;width: 174px !important;box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;-webkit-box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;" ></a>