Ответ
В Kotlin абстрактные классы похожи на Java, но с некоторыми отличиями:
- Объявление: В Kotlin используется ключевое слово
abstractпередclass
abstract class Animal {
abstract fun makeSound()
}
- Свойства: В Kotlin абстрактные классы могут иметь абстрактные свойства (в Java - только методы)
abstract class Shape {
abstract val area: Double
}
-
Реализация по умолчанию: В Kotlin абстрактные классы могут содержать неабстрактные члены с реализацией (как и в Java)
-
Модификаторы: В Kotlin все абстрактные члены по умолчанию
open(не нужно явно указывать) -
Интерфейсы vs абстрактные классы: В Kotlin интерфейсы могут содержать реализацию методов (как default-методы в Java 8+), что уменьшает необходимость в абстрактных классах