Compare and contrast an interface and an abstract class in Kotlin, providing practical use cases for both.