Наследование интерфейсов в Kotlin
Интерфейсы наследуют друг друга так же, как классы: после двоеточия указывают родительский интерфейс. Дочерний контракт включает все методы и свойства родителя плюс свои.
interface Figure {
fun area(): Double
fun perimeter(): Double
}
interface Rectangle : Figure {
val width: Double
val height: Double
}
Класс, реализующий Rectangle, обязан закрыть
и методы Figure, и требования Rectangle.
Повторно объявлять методы родительского интерфейса
в дочернем не нужно - они уже входят в контракт.
class SimpleRect(
override val width: Double,
override val height: Double
) : Rectangle {
override fun area(): Double = width * height
override fun perimeter(): Double = 2 * (width + height)
}
Цепочка интерфейсов помогает не дублировать одинаковые методы в разных контрактах. Общую часть выносят в базовый интерфейс, частные детали - в наследников.
Сделайте интерфейс User с методами
getName, setName, getAge,
setAge.
Сделайте интерфейс Employee, наследующий
от интерфейса User и добавляющий
в него методы getSalary и setSalary.
Сделайте класс OfficeEmployee, реализующий
интерфейс Employee.