在Kotlin中,为什么不能使用;由「;关键字就像界面一样

在Kotlin中,为什么不能使用;由「;关键字就像界面一样,kotlin,kotlin-delegate,Kotlin,Kotlin Delegate,对于为什么不能使用“by”关键字委派抽象类,我找不到任何令人满意的理由 注: 说我们需要在扩展抽象类时调用它的构造函数,这并不是一个令人满意的技术解决方案。这是不可能的,因为委托仅限于接口 其中一个主要原因是,比方说,违反合同-如果一个类被委托,那么“默认”方法,比如toString,hashCode,equals,是否应该被委托 解释为什么会出现这种情况,以及取消此限制会产生什么后果。这是否回答了您的问题?1.不,接受答案中的陈述不够令人满意。在提供链接之前,您自己是否觉得答案令人满意?如果是

对于为什么不能使用“by”关键字委派抽象类,我找不到任何令人满意的理由

注:
说我们需要在扩展抽象类时调用它的构造函数,这并不是一个令人满意的技术解决方案。

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

其中一个主要原因是,比方说,违反合同-如果一个类被委托,那么“默认”方法,比如
toString
hashCode
equals
,是否应该被委托


解释为什么会出现这种情况,以及取消此限制会产生什么后果。

这是否回答了您的问题?1.不,接受答案中的陈述不够令人满意。在提供链接之前,您自己是否觉得答案令人满意?如果是,你能解释一下委派抽象类的问题是什么吗2.他们在回答中甚至没有提到抽象类。我实际上同意@Cililing的观点,并认为答案令人满意。你认为哪一部分不适用?它概述了为什么只能使用接口,并且作为抽象类不是接口,它完美地回答了您的问题?是的,我检查了答案,您的问题完全由该答案解决。因此,简单地回答您的问题-您不能使用抽象类作为委托,因为它不是接口。然而,在相关的问题中,有一个解释,为什么授权仅限于接口。几天后,重新审视答案,现在它是有意义的。
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