For this kind of question Google would be a far better solution.
Why we uses abstract classes[
^]
Learn This: When to use an Abstract Class and an Interface[
^]
By the way, any good book on object-oriented programming should help you understand the purpose and use of abstract classes.
Generally, one would prefer interfaces to abstract classes as they are more separated from the implementation in the sense that it is much easier to reuse an interface for different classes that to reuse an abstract class particulary if the class already has a parent.
But in some cases when the class should be the base class of a family of related classes, it does make senses to uses abstract classes as it would be possible to share part of the implementation.
You cannot instantiate an abstract class but you instantiate a class that derive from one provided that you have overwrote any abstract method. This is pretty basic OOP. It allows polymorphism.