Ключевое слово abstract

Ключевое слово abstract применяется для объявления абстрактных классов и методов. Абстрактный класс не может быть инстанциирован напрямую и служит базой для других классов. Абстрактные методы не имеют реализации и должны быть переопределены в классах-наследниках.

Синтаксис

kotlinabstract class ClassName {
  abstract fun methodName(): ReturnType
}
kotlinabstract fun methodName(): ReturnType

Пример

Создадим абстрактный класс Animal с абстрактным методом makeSound:

kotlinabstract class Animal {
  abstract fun makeSound(): String
}

Пример

Создадим класс Dog, наследующий Animal, и реализуем абстрактный метод:

kotlinclass Dog : Animal() {
  override fun makeSound(): String {
    return "Woof!"
  }
}

Пример

Создадим класс Cat, наследующий Animal, и реализуем абстрактный метод:

kotlinclass Cat : Animal() {
  override fun makeSound(): String {
    return "Meow!"
  }
}

Пример

Продемонстрируем использование созданных классов:

kotlinval dog = Dog()
val cat = Cat()

println(dog.makeSound())
println(cat.makeSound())

Результат выполнения кода:

kotlinString "Woof!"
String "Meow!"

Пример

Абстрактный класс может содержать как абстрактные, так и обычные методы с реализацией:

kotlinabstract class Vehicle {
  abstract fun startEngine(): String
  
  fun stopEngine(): String {
    return "Engine stopped"
  }
}

class Car : Vehicle() {
  override fun startEngine(): String {
    return "Car engine started"
  }
}

Пример

Абстрактные классы могут иметь абстрактные свойства:

kotlinabstract class Shape {
  abstract val area: Double
}

class Circle(val radius: Double) : Shape() {
  override val area: Double
    get() = Math.PI * radius * radius
}

Смотрите также

  • ключевое слово class,
    для создания обычных классов
  • ключевое слово interface,
    для создания интерфейсов
  • ключевое слово open,
    для разрешения наследования от классов
  • ключевое слово override,
    для переопределения методов и свойств