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

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

Интерфейс может описывать не только методы, но и свойства. Свойство без инициализации в интерфейсе абстрактное: класс обязан дать ему значение - через поле, параметр конструктора или переопределение.

interface Named { val name: String } class Person(override val name: String) : Named

Свойство только для чтения объявляют через val, изменяемое - через var. В интерфейсе нельзя хранить отдельное поле с инициализацией, как в обычном классе, но можно задать геттер с телом.

interface Labeled { val label: String val caption: String get() = "label: $label" } class Tag(override val label: String) : Labeled

Если в интерфейсе указан var, класс должен предоставить и чтение, и запись - обычно через свое поле или явные get и set.

interface Counter { var value: Int } class MutableCounter : Counter { override var value: Int = 0 }

Сделайте интерфейс Identifiable. Пусть в интерфейсе будет свойство id типа Int только для чтения.

Сделайте класс Product, который будет реализовывать интерфейс Identifiable. Значение свойства id передавайте параметром конструктора.

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