What are abstract class and Interface are used for in OOP? Is there any examples to show the advantages of using abstract class or Interface? Please give me detail.