Несколько интерфейсов в Kotlin
Класс в Kotlin может иметь только одного родителя-класса, но любое количество интерфейсов. Имена перечисляют через запятую после двоеточия.
interface Drawable {
fun draw()
}
interface Movable {
fun move()
}
class Sprite : Drawable, Movable {
override fun draw() {
println("draw")
}
override fun move() {
println("move")
}
}
Каждый интерфейс добавляет свой набор обязательных членов. Класс должен реализовать их все, иначе объявление останется неполным.
Если два интерфейса объявляют метод с одинаковой
сигнатурой, в классе достаточно одного override.
Когда сигнатуры совпадают, но нужны разные реализации
из родительских интерфейсов, вызывают их через
super с указанием типа.
interface A {
fun report() = println("A")
}
interface B {
fun report() = println("B")
}
class Both : A, B {
override fun report() {
super<A>.report()
super<B>.report()
}
}
Сделайте интерфейс Readable с методом
read и интерфейс Writable с методом
write.
Сделайте класс Document, который будет
реализовывать оба интерфейса: и Readable,
и Writable.
Сделайте интерфейс Figure с методами
area и perimeter.
Сделайте интерфейс Quadrilateral с геттерами
четырех сторон.
Сделайте класс Square, который также
будет реализовывать два интерфейса: и Figure,
и Quadrilateral.