🔌 Kotlin Interfaces – Complete Guide with Examples (2025)
Understand how interfaces work in Kotlin, how they differ from abstract classes, and how to implement multiple interfaces with real code examples.
🚀 What is an Interface in Kotlin?
An interface in Kotlin defines a contract that classes can implement. It can contain:
- Abstract methods (without implementation)
- Concrete methods (with default implementation) — from Kotlin 1.1+
- Properties (abstract or with getters)
📌 Use interfaces when you want to define capabilities that can be shared across unrelated classes.
🧱 Kotlin Interface Syntax
interface Drivable {
    fun drive()
    fun stop() {
        println("Vehicle stopped.")
    }
}
- drive()is abstract.
- stop()has a default implementation.
🚗 Implementing an Interface
class Car : Drivable {
    override fun drive() {
        println("Driving the car...")
    }
}
fun main() {
    val myCar = Car()
    myCar.drive()      // Output: Driving the car...
    myCar.stop()       // Output: Vehicle stopped.
}
✅ The class must override all abstract methods in the interface.
🔁 Multiple Interfaces
Kotlin supports multiple interface inheritance, enabling classes to implement multiple behaviors:
interface Drivable {
    fun drive()
}
interface Flyable {
    fun fly()
}
class FlyingCar : Drivable, Flyable {
    override fun drive() = println("FlyingCar is driving.")
    override fun fly() = println("FlyingCar is flying.")
}
🧠 This allows composition of behaviors, similar to mixins.
🧮 Interfaces with Properties
interface Shape {
    val name: String
    fun draw()
}
class Circle : Shape {
    override val name = "Circle"
    override fun draw() = println("Drawing a circle.")
}
- Properties can be declared in interfaces.
- Must be overridden or have a default getter.
🤺 Interface Inheritance
Interfaces can extend other interfaces:
interface Machine {
    fun operate()
}
interface SmartMachine : Machine {
    fun selfCheck()
}
A class implementing SmartMachine must also implement operate().
🧭 Interface vs Abstract Class – Quick Comparison
| Feature | Interface | Abstract Class | 
|---|---|---|
| Multiple inheritance | ✅ Yes | ❌ No | 
| Method implementation | ✅ Yes (default methods) | ✅ Yes | 
| Properties | ✅ Abstract or with getters | ✅ Full property support | 
| Constructors | ❌ Not allowed | ✅ Allowed | 
| Use case | Behavior contracts | Base classes with logic | 
📋 Summary
| Concept | Description | 
|---|---|
| interface | Defines a contract of abstract + optional methods | 
| default method | Function with implementation (from Kotlin 1.1+) | 
| multiple interfaces | Kotlin supports implementing multiple interfaces | 
| interface inheritance | Interfaces can extend other interfaces | 
| properties | Can be abstract or have custom getter | 
❓ FAQ – Kotlin Interfaces
🔹 Q1: Can an interface have a constructor?
A: No. Interfaces in Kotlin cannot have constructors or state (fields).
🔹 Q2: Can you inherit from multiple interfaces in Kotlin?
A: Yes. Kotlin supports multiple interface inheritance.
🔹 Q3: Can you override default methods in interfaces?
A: Yes. Classes can override default methods provided in interfaces.
interface Greetable {
    fun greet() = println("Hello!")
}
class User : Greetable {
    override fun greet() = println("Hi there!")
}
🔹 Q4: Can interfaces contain properties?
A: Yes, but:
- They must be abstract, or
- Have only getter implementations.
🔹 Q5: Is interface the same as abstract class?
A: No. Use interface for defining capabilities and abstract class for shared code base and inheritance.
Share Now :
