Практика на abstract в Kotlin
Сделайте абстрактный класс Storage
с абстрактным методом fun count(): Int.
Сделайте классы ListStorage
и SetStorage, которые возвращают
размер своей коллекции.
Выведите оба значения для непустых коллекций.
Дан класс:
abstract class Report {
abstract val title: String
abstract fun body(): String
fun headline(): String {
return title.uppercase()
}
}
Сделайте DailyReport с заголовком "day"
и телом "ok". Выведите headline()
и body().
Сделайте абстрактный класс Payment
с конструктором amount: Int
и абстрактным методом label(): String.
Сделайте классы CardPayment
и CashPayment, возвращающие
"card" и "cash".
Выведите метки для суммы 50.
Сделайте абстрактный класс UnitConv
с методом toBase(value: Double): Double
в теле класса и абстрактным методом
fromBase(value: Double): Double.
Сделайте KmConv, где базовая единица -
метры, а множитель равен 1000.
Выведите 2.5 км в метрах и обратно.
Сделайте абстрактный класс Role
с абстрактным свойством code: String.
Сделайте GuestRole со значением
"G" и StaffRole
со значением "S".
Дан список ролей из обоих типов.
Выведите коды в порядке списка в одной строке
без пробелов.
Дан класс:
abstract class Job(val name: String) {
abstract fun run(): Boolean
fun describe(): String {
return name + if (run()) ":done" else ":fail"
}
}
Сделайте CopyJob, возвращающий
true, и MoveJob,
возвращающий false.
Выведите describe() для обоих.
Сделайте абстрактный класс Widget
с приватным счётчиком созданных виджетов
в companion и абстрактным методом
kind(): String.
Пусть каждый наследник увеличивает счётчик
в init.
Создайте по одному Button
и Field. Выведите счётчик
и оба kind().
Сделайте абстрактный класс Parser
с абстрактным методом
parse(line: String): Int?.
Сделайте IntParser, который возвращает
число или null.
Даны строки "10", "x".
Выведите результаты разбора.
Сделайте абстрактный класс Discount
с методом apply(price: Int): Int
в базовом классе, вызывающим абстрактный
метод rate(): Double.
Сделайте HalfPrice со ставкой 0.5.
Выведите цену 80 после скидки.