Kotlin supports hybrid delegation in the form of delegated properties. Class delegation is based on the supertype. This means that both delegate and delegating classes implement the same interface. With class delegation, the delegate object is a parent of the delegating object.
The concept of hybrid delegation, on the other hand, doesn't require common implementation of a common interface or any parent-to-child relations. Instead, public methods of the delegate object take a reference to a delegating object as an argument. This allows the delegate object to use public methods of a delegating object.
The Kotlin standard library contains several useful implementations that use delegated properties.