Caveats of Kotlin Delegation
We'll cover the following...
Implementation caveat
In the example we’ve created so far, the Manager
may delegate calls to an instance of a JavaProgrammer
, but a reference to a Manager
may not be assigned to a reference of a JavaProgrammer
—that is, a Manager
may use a JavaProgrammer
, but a Manager
may not be used as a JavaProgrammer
. In other words, a Manager
has a JavaProgrammer
but is not a kind of JavaProgrammer
. Thus, delegation offers reuse without accidentally leading to substitutability as inheritance does.
However, there’s one small consequence of how Kotlin implements ...