Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗ktOpIfIC 59 of 123 menu
◀ ▶

Проверка интерфейса в Kotlin

Оператор is проверяет тип значения во время выполнения. Для интерфейса выражение obj is Figure даст true, если объект создан классом, реализующим Figure.

interface Figure { fun area(): Double } class Disk(private val radius: Double) : Figure { override fun area(): Double = 3.14 * radius * radius } fun main() { val shape: Figure = Disk(2.0) println(shape is Disk) println(shape is Figure) }

Отрицание записывают как !is. После успешной проверки is компилятор часто сужает тип переменной в той же ветке кода, и методы интерфейса можно вызывать без приведения.

fun describe(value: Any) { if (value is Figure) { println(value.area()) } }

Проверка интерфейса удобна, когда в одной коллекции лежат объекты разных классов, а обрабатывать нужно только те, что подходят под общий контракт.

interface VolumeFigure { fun volume(): Double } fun printAreas(items: List<Any>) { for (item in items) { when { item is Figure -> println(item.area()) item is VolumeFigure -> println(item.volume()) } } }

Сделайте интерфейс VolumeFigure, который будет иметь метод volume и метод surfaceArea.

Сделайте класс Cube, который будет реализовывать интерфейс VolumeFigure.

Создайте несколько объектов классов, реализующих интерфейс Figure, и несколько объектов класса Cube. Запишите их в список в случайном порядке.

Переберите циклом этот список и выведите на экран только площади объектов, реализующих интерфейс Figure.

Переберите циклом тот же список и выведите для плоских фигур их площади, а для объемных - площади их поверхности.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить