Вызов 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.