Explain the differences between Interface and Abstract class? When should we use them?