In C#, function declarations within an interface are implicitly pure virtual. An abstract class is a partially defined class that cannot be instantiated. It (usually) includes some implementation, but leaves some functions as pure virtual- declared only by their signature.
When We want to do/define some functionality of a class now or some in future then only we can define a Abstract class. Because Abstract class supports both abstract and concrete methods.When we decided to perform some action in future which is not yet decided, then we can define it as a abstract method in an abstract class. Latter we can implement it in some other class according to our wish.