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

Вызов super в Kotlin

После override тело родительского метода в потомке не выполняется автоматически. Вызов реализации родителя записывают через super и точку перед именем метода. Сначала зададим метод в родителе:

open class User { var age: Int = 0 open fun setAge(age: Int) { if (age >= 0) { this.age = age } else { println("need age more 0") } } }

В Employee добавим верхнюю границу, а проверку «не меньше нуля» оставим родителю:

class Employee : User() { override fun setAge(age: Int) { if (age <= 120) { super.setAge(age) } else { println("need age less 120") } } }

Проверка:

fun main() { val employee = Employee() employee.setAge(30) println(employee.age) }

Дан следующий код:

open class User { var age: Int = 0 open fun setAge(age: Int) { if (age >= 0) { this.age = age } else { println("need age more 0") } } } class Employee : User() { override fun setAge(age: Int) { if (age <= 120) { if (age >= 0) { this.age = age } else { println("need age more 0") } } else { println("need age less 120") } } }

В классе Employee исправьте и упростите сеттер возраста, использовав оригинальный метод родителя через super.

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