Abstract Class in C#

The abstract class is a special type of class which contains at least one abstract method. It should be declared with the keyword abstract. Every abstract class consists of one or more abstract methods. These methods will only have the method definitions i.e. abstract class will not have any method body, such as the instance method or the class method.
 
Basically, a base class is declared with the abstract keyword, and the derived classes should inherit the abstract class and provide implementation for the relevant methods. In the given example of abstract class, an abstract method named Display() is declared inside the AbstractClass class.
 
The derived class AbstractMethodDef then inherits the abstract class AbstractClass and provides implementation to the abstract method. Inside the Main() method, an instance of the class is created and the method is called.
 
AbstractClass.cs
 
using System;
abstract public class AbstractClass
{
public abstract void Display();
}
class AbstractMethodDef:AbstractClass
{
public override void Display()
{
Console.WriteLine("Abstract Method Implemented");
}
public static void Main()
{
AbstractMethodDef abs = new AbstractMethodDef ();
abs.Display();
}
}
 
Difference between Abstract Class and Interface
 
There are some similarities and differences between an interface and an abstract class that have been arranged in the given table for easier comparison:
 
Feature Interface Abstract class
Multiple inheritance A class may inherit several interfaces. A class may inherit only one abstract class.
Default implementation An interface cannot provide any code, just the signature. An abstract class can provide complete, default code and/or just the details that have to be overridden.
Constants Only Static final constants. Both instance and static constants are possible.
Core VS Peripheral Interfaces are used to define the peripheral abilities of a class. In other words both Human and Vehicle can inherit from a IMovable interface. An abstract class defines the core identity of a class and there it is used for objects of the same type.
Homogeneity If the various implementations only share method signatures then it is better to use Interface. If the various implementations are of the same kind and use common behaviour or status then abstract class is better to use.
Speed Requires more time to find the actual method in the corresponding classes. Fast
Adding functionality If we add a new method to an Interface then we have to track down all the implementations of the interface and define implementation for the new method. If we add a new method to an abstract class then we have the option of providing default implementation and therefore all the existing code might work properly.