Object-Oriented Programming (OOP) in Kotlin
Estimated reading: 3 minutes 187 views

🧱 Kotlin – Abstract Classes (2025 Guide)

Learn how abstract classes work in Kotlin, when to use them, and how they differ from interfaces—with syntax, examples, and FAQs.


🚀 What is an Abstract Class in Kotlin?

An abstract class in Kotlin is a class that cannot be instantiated directly. It acts as a base class that defines common behavior for subclasses and can include both abstract methods (without body) and concrete methods (with body).

📌 Use abstract classes when:

  • You want to provide a partial implementation.
  • You want to enforce a common base for related classes.

🧩 Key Features

  • Can contain abstract and non-abstract members.
  • Cannot be instantiated.
  • Subclasses must override abstract members.

🧱 Kotlin Abstract Class Syntax

abstract class Animal {
    abstract fun makeSound()

    fun breathe() {
        println("Breathing...")
    }
}

🔍 In the above code:

  • makeSound() is an abstract function – must be overridden.
  • breathe() is a concrete method – optional to override.

🐾 Example – Abstract Class Implementation

abstract class Animal {
    abstract fun makeSound()

    fun eat() {
        println("Eating...")
    }
}

class Dog : Animal() {
    override fun makeSound() {
        println("Woof!")
    }
}

fun main() {
    val dog = Dog()
    dog.makeSound()  // Output: Woof!
    dog.eat()        // Output: Eating...
}

Dog class implements the abstract function and inherits the concrete function.


🆚 Abstract Class vs Interface in Kotlin

FeatureAbstract ClassInterface
Can contain state (fields)✅ Yes⚠️ From Kotlin 1.1+ only
Multiple inheritance❌ No✅ Yes
Constructor✅ Can have❌ Cannot have
Default implementation✅ Yes✅ Yes

🧠 Use abstract class when:

  • You need to share code/state among subclasses.
  • You want to create a base class with constructor or properties.

🔄 Abstract Properties

abstract class Shape {
    abstract val name: String
}

class Circle : Shape() {
    override val name = "Circle"
}

📌 Abstract properties must be overridden by the subclass.


❗ Restrictions

  • Cannot be instantiated directly: val animal = Animal() // ❌ Error
  • All abstract members must be implemented by concrete subclasses.

📋 Summary

ConceptDescription
abstract classBase class with or without method bodies
abstract functionMust be overridden in subclasses
abstract propertyMust be initialized in subclasses
open functionOptional to override

❓ FAQ – Kotlin Abstract Classes

🔹 Q1: Can I create an object of an abstract class?

A: No. Abstract classes cannot be instantiated directly.


🔹 Q2: Can abstract classes have constructors?

A: Yes. You can define constructors just like in regular classes.

abstract class Base(val id: Int)

🔹 Q3: Can a Kotlin class extend both an abstract class and implement interfaces?

A: Yes. Kotlin supports single inheritance (one abstract class) and multiple interfaces.

class MyClass : AbstractClass(), MyInterface

🔹 Q4: Is an abstract class implicitly open?

A: Yes. You don’t need to use the open modifier with abstract classes.


🔹 Q5: Can I have a non-abstract class with only abstract methods?

A: No. If a class has even one abstract method or property, it must be declared abstract.


Share Now :
Share

Kotlin – Abstract Classes

Or Copy Link

CONTENTS
Scroll to Top