Delegation refers to a situation in which we pass responsibility to someone else. In Kotlin, properties can either be accessed directly, or by using the get and set functions with the backing field. When properties are not backed by their own class but the responsibility is given to another class instead, these properties are called delegate properties. This might look strange at first, but when the class properties are more complex than simply storing values in fields, this feature becomes very convenient. First, let's have a look at how to delegate properties to the helper class. We'll start with a Person class with two properties, name and age:
class Person() {
val name : String by DelegatePersonName()
var age : Int by DelegatePersonAge()
}
There are two things to notice in the Person class: the by keyword and the class name after the by...