为什么这个Kotlin对象可以继承自己?

时间:2017-10-13 14:04:06

标签: kotlin teamcity

我正在尝试使用Kotlin与TeamCity进行交互。

当您将项目转换为Kotlin(来自.xml)时,您将拥有一个名为Project.kt的文件,您可以在其中设置所有配置。

没有编辑我的看起来像这样:

object Project : Project(/* Some Function Literal with Receiver */)

这看起来像循环继承?我省略了进口产品,但肯定不会产生那么大的差别吗?是否可以根据文件中出现的位置以不同的方式解释名称?

我的想法就是这样解释对象签名:

  • object =单身人士的对象声明。
  • 项目(第一次出现)=对象名称。
  • =继承标记。
  • 项目(第二次出现)=要继承的基类。
  • () =构造函数调用基类。

这是循环继承还是我错过了关于Kotlin的重大事件?我看了herehere,似乎无法找到答案。

1 个答案:

答案 0 :(得分:9)

假设合格的班级other.Projectmy.Project,您可以在不同的套餐中使用相同的名称定义两个不同的类。

由于my.Project被定义为Singleton,因此您无法从中扩展,实际的基类为other.Project Kotlin 非常聪明,可以区分。如果您尝试对类声明执行相同操作,则会获得循环继承。

你甚至可以尝试强制从Singleton强制扩展,但是你会有错误不能从Singleton继承。所以基本上只有在导入正确的类时才能正常工作。