【发布时间】:2021-05-10 18:37:28
【问题描述】:
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”关键字委托抽象类。
注意:
说we need to call constructor of Abstract class while extending it,这不是一个令人满意的问题技术答案。
【问题讨论】:
-
1.不,接受答案中的那些陈述不够令人满意。在提供链接之前,您自己是否认为该答案令人满意?如果是,您能解释委派抽象类的问题吗? ---- 2. 他们甚至没有在那个答案中谈论抽象类。
-
我实际上同意@Cililing 并发现答案令人满意。你觉得哪一部分不适用?它概述了为什么只能使用接口并且作为抽象类不是接口,那么它完美地回答了您的问题?
-
是的,我检查了答案,您的问题完全可以通过该答案得到解决。因此,只需回答您的问题 - 您不能将抽象类用作委托,因为它不是接口。然而,在链接的问题中,有一个解释为什么委派仅限于接口。