Методы с телом в интерфейсе Kotlin
В Kotlin метод интерфейса может иметь тело. Такая реализация по умолчанию попадает во все классы, которые подключают интерфейс, пока они сами не переопределят метод.
interface Clickable {
fun click()
fun showHint() {
println("clickable")
}
}
class Button : Clickable {
override fun click() {
println("clicked")
}
}
Класс обязан реализовать только методы без тела.
Метод showHint можно вызывать сразу у объекта
Button, не писа́я его код заново.
fun main() {
val button = Button()
button.click()
button.showHint()
}
При необходимости поведение по умолчанию заменяют
своим override. Это удобно, когда у большинства
реализаций один и тот же код, а у отдельных типов -
особый.
interface Clickable {
fun click()
fun showHint() {
println("clickable")
}
}
class SilentButton : Clickable {
override fun click() {
println("silent click")
}
override fun showHint() {
println("no hint")
}
}
Сделайте интерфейс Resettable. Пусть в нем
будет абстрактный метод reset и метод
describeReset с телом, которое выводит
строку "reset available".
Сделайте класс Timer, реализующий интерфейс
Resettable. Не переопределяйте метод
describeReset.