Введение в абстрактные классы в Kotlin
Иногда один класс описывает общее для нескольких типов, но сами
объекты этого класса создавать не планируют. Например, есть
User с полями и методами, а конкретные люди в программе -
это Employee и Student, наследующие от User.
Базовый тип нужен только как общая основа для потомков.
Абстрактный класс как раз задаёт такую основу: в нём можно
хранить общие свойства и методы, но экземпляр абстрактного класса
создать нельзя. Компилятор не даст написать User(), если
User объявлен абстрактным.
От обычного класса абстрактный отличается ключевым словом
abstract в объявлении. Наследоваться от него можно так же,
как от открытого родителя: потомок пишет двоеточие и вызывает
конструктор базового типа:
abstract class User
class Employee : User()
class Student : User()
Объекты создают только у конкретных классов-потомков. Общая логика остаётся в абстрактном родителе, а отличия - в наследниках. В следующих уроках разберём объявление абстрактного класса, абстрактные методы и свойства, общий код в теле класса и конструкторы.