what are the differences between interface and abstract class?
When should I use abstract class and when interface?