在 Kotlin 中,为什么抽象 class 不能像接口一样使用 "by" 关键字委托

In Kotlin, Why Abstract class cannot be delegated using "by" keyword just like interface

interface IA {
    fun callMe()
}

abstract class AbstractA {
    abstract fun callMe()
}

// Allowed
class ImplementationA(a: IA): IA by a

//Why this is Not Allowed ?
class ImplementationA(a: AbstractA): AbstractA() by a

我找不到任何令人满意的理由来说明为什么不能使用“by”关键字委托 Abstract class。

注意: 说 we need to call constructor of Abstract class while extending it ,这不是问题的令人满意的技术答案。

这是不可能的,因为委派仅限于接口。

比方说,其中一个主要原因是违反了合同——如果 class 被委托,那么使用“默认”方法,如 toStringhashCodeequals - 他们应该授权还是不授权?

解释了为什么会这样,以及取消此限制会产生什么后果。