Что такое Abstract Class

«Что такое Abstract Class» — вопрос из категории ООП, который задают на 26% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Абстрактный класс — это класс, который нельзя инстанцировать напрямую. Он служит шаблоном для других классов и может содержать как абстрактные методы (без реализации), так и обычные методы с реализацией.

Ключевые особенности:

  • Может иметь абстрактные методы (обязательные для переопределения в наследниках).
  • Может содержать реализованные методы.
  • Позволяет выносить общую логику в базовый класс.

Пример:

abstract class Animal {
    abstract fun makeSound()  // Абстрактный метод
    fun eat() { println("Eating...") }  // Обычный метод
}

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

Отличие от интерфейса:

  • Абстрактный класс может хранить состояние (поля), интерфейс — нет (до Kotlin 1.4).
  • Класс может наследовать только один абстрактный класс, но много интерфейсов.