← All courses

Classes, Objects & OOP

🗓 May 31, 2026 ⏱ 1 min read

Classes and constructors

class Car(val brand: String, var speed: Int = 0) {
    fun accelerate(by: Int) { speed += by }
}
val c = Car("Tata")
c.accelerate(20)

Data classes

data class User(val id: Int, val name: String)
val u = User(1, "Anand")
val u2 = u.copy(name = "Gaur")   // free copy(), equals(), toString()

Interfaces & inheritance

interface Shape { fun area(): Double }

open class Animal(val name: String) {
    open fun sound() = "..."
}
class Dog(name: String) : Animal(name) {
    override fun sound() = "Woof"
}

Objects & companions

object Config { const val VERSION = "1.0" }  // singleton

class Repo {
    companion object {
        fun create() = Repo()                // like a static factory
    }
}
Tip: Classes are final by default — mark them open to allow inheritance. Favour composition and data classes over deep hierarchies.