Interfaces are rules (provides only method declarations and not the implementation). Interfaces give the idea what is to be done but not how it will be done. So implementation completely depends on developer by following the given rules (means given signature of methods).

Abstract classes may contain abstract declarations, concrete implementations, or both. But interfaces cannot have concrete implementations. Abstract declarations are like rules to be followed and concrete implementations are like guidelines (you can use it as it is or you