Абстрактный класс в Kotlin
Абстрактный класс объявляют словами abstract class и именем
типа. Внутри допустимы обычные свойства и методы с телом - как в
любом классе:
abstract class User {
private var name: String = ""
fun getName(): String {
return name
}
fun setName(name: String) {
this.name = name
}
}
Попытка создать объект абстрактного класса приводит к ошибке компиляции:
// val user = User()
Конкретный класс наследует абстрактный без слова open у
родителя - для abstract class наследование разрешено
по умолчанию. У потомка можно добавить свои поля и методы:
class Employee : User() {
private var salary: Int = 0
fun getSalary(): Int {
return salary
}
fun setSalary(salary: Int) {
this.salary = salary
}
}
Объект потомка создаётся обычным вызовом конструктора. Методы родителя доступны у объекта наследника:
fun main() {
val employee = Employee()
employee.setName("john")
employee.setSalary(1000)
println(employee.getName())
println(employee.getSalary())
}
Сделайте абстрактный класс Figure,
представляющий собой геометрическую
фигуру. Пусть от него наследует классы
Circle, Rectangle
и Square.