Класс и интерфейс в Kotlin
Класс может расширять один open класс и при этом
реализовать один или несколько интерфейсов. Сначала
указывают базовый класс, затем интерфейсы через запятую.
interface Programmer {
fun getLangs(): List<String>
fun addLang(lang: String)
}
open class Employee(
private var name: String,
private var salary: Int
) {
fun getName(): String = name
fun getSalary(): Int = salary
}
Часть методов контракта уже есть в Employee.
Новый класс берет их через наследование и дописывает
только то, чего не хватает для интерфейса.
class Developer(
name: String,
salary: Int,
private val langs: MutableList<String> = mutableListOf()
) : Employee(name, salary), Programmer {
override fun getLangs(): List<String> = langs
override fun addLang(lang: String) {
langs.add(lang)
}
}
Тип параметра или поля можно указать как интерфейс. Тогда в метод передают любой объект класса, который этот интерфейс реализует.
class Team {
private val members = mutableListOf<Programmer>()
fun add(member: Programmer) {
members.add(member)
}
}
Сделайте интерфейс Storable, в котором будет
метод save.
Сделайте open class Entity. Пусть
у класса будет свойство title типа
String.
Сделайте класс Article, который будет
наследовать класс Entity и реализовывать
интерфейс Storable.