Практика на интерфейсы в Kotlin
Дан интерфейс:
interface Named {
val name: String
}
Сделайте класс City, реализующий
интерфейс Named.
Выведите name для "Oslo".
Даны интерфейсы:
interface Printable {
fun printLine(): String
}
interface Storable {
fun save(): Boolean
}
Сделайте класс Note, реализующий
оба интерфейса.
Пусть printLine() возвращает "note",
а save() - true.
Выведите оба результата.
Дан интерфейс:
interface Clock {
fun now(): String
fun stamp(): String {
return "@" + now()
}
}
Сделайте класс FixedClock, который
возвращает "12:00" из now().
Выведите stamp() без переопределения
stamp.
Сделайте интерфейс Desc, наследующий
Named, и добавьте метод
fun blurb(): String.
Сделайте класс Product с именем
и методом blurb(), возвращающим
name и "!".
Выведите blurb для "tea".
Дан список:
interface Scored {
val score: Int
}
class Entry(override val score: Int) : Scored
val rows: List<Scored> = listOf(
Entry(3),
Entry(7),
Entry(5),
)
Выведите сумму score всех записей.
Сделайте интерфейс Resettable
с методом fun reset().
Сделайте класс Counter, который хранит
value и реализует Resettable.
Увеличьте значение до 4, сбросьте,
выведите value.
Даны типы:
interface A {
fun tag(): String = "A"
}
interface B {
fun tag(): String = "B"
}
Сделайте класс Both, реализующий
A и B, и верните из tag()
строку "AB".
Выведите результат.
Сделайте интерфейс Validator
с методом fun ok(text: String): Boolean.
Сделайте NonEmpty, принимающий только
непустые строки.
Проверьте "" и "hi",
выведите оба ответа.
Дан фрагмент:
interface HasId {
val id: Long
}
fun showId(x: Any) {
if (x is HasId) println(x.id) else println(0L)
}
Вызовите showId для object : HasId {
override val id = 9L
} и для "x".
Сделайте интерфейс Formatter
с методом format(n: Int): String.
Сделайте класс HexFmt, который выводит
шестнадцатеричную строку без префикса.
Отформатируйте 255 и выведите.