Abstract class: a half-built house — some walls exist with real code, some rooms are only marked abstract until a subclass finishes them. Interface: a checklist of behaviors — still no fields unless you cheat with properties in interfaces on newer JVM targets. In Kotlin you will lean on interfaces + data classes + sealed types often; abstract classes appear when you truly want shared stateful logic in a base.
Abstract class sketch