Я видел несколько похожих вопросов, но ни один не объяснил, почему делегирование ограничено интерфейсами?
В большинстве случаев на практике у нас есть что-то, что на самом деле вообще не имеет интерфейса, это класс, который ничего не реализует, но предоставляет некоторые функции или реализует абстрактный класс.
Есть ли какое-то фундаментальное ограничение, которое заставляет это быть ограниченным интерфейсами, или мы можем ожидать, что kotlin будет иметь неограниченное делегирование в будущем?
Это особенно полезно, если мы хотим расширить функциональность класса, используя композицию, а не наследование.
class A {}
class B(val a: A) : A by a {}