Class delegation
Class delegation is another interesting feature of Kotlin. How? Just think of the following situation.
You have an interface, I, and two classes, A and B. Both A and B implement I. In your code, you've an instance of A and you want to create an instance of B from that A.
In traditional inheritance, it is not directly possible; you have to write a bunch of nasty codes to achieve that, but class delegation is there to save you.
Go through the following code:
interface Person {
fun printName()
}
class PersonImpl(val name:String):Person {
override fun printName() {
println(name)
}
}
class User(val person:Person):Person by person {
override fun printName() {
println("Printing Name:")
person.printName()
}
}
fun main(args: Array<String>) {
val person = PersonImpl("Mario Arias")
person.printName()
println()
val user = User(person)
user.printName()
} In this program, we created the instance...