protected при наследовании в Kotlin
Модификатор protected открывает член родителя для кода
внутри самого класса и его наследников. Снаружи по-прежнему
нельзя обратиться к полю напрямую:
open class User {
protected var name: String = ""
open fun setName(name: String) {
this.name = name
}
fun getName(): String {
return this.name
}
}
В Employee переопределённый сеттер может писать
в name родителя:
class Employee : User() {
override fun setName(name: String) {
if (name.isNotEmpty()) {
this.name = name
}
}
}
Защищённый метод родителя виден в потомке:
open class User {
protected fun notEmpty(str: String): Boolean {
return str.isNotEmpty()
}
}
class Employee : User() {
fun setSurn(surn: String) {
if (notEmpty(surn)) {
// save surn
}
}
}
Перепишите следующий код через
защищенное свойство: сделайте поле
name в классе User
с модификатором protected
и исправьте метод setName
в классе Employee.