来自Kotlin的Any的显式继承 - 可以和它是如何完成的?

时间:2014-02-24 01:44:53

标签: kotlin

Kotlin文件说明了

  

Kotlin中的所有类都有一个共同的超类任何,这是没有声明超类型的类的默认超类

如果我尝试明确地继承Any:

class MyClass : Any {

}

编译器发出错误:

  

Kotlin:这个类型有一个构造函数,因此必须在这里初始化

我无法找到Any类的文档。是否有可能明确地从Any继承,如果是,你传递了什么?

3 个答案:

答案 0 :(得分:7)

你必须明确地调用构造函数:

class MyClass : Any()

Any的构造函数没有参数,因此调用它只需提供空括号

答案 1 :(得分:5)

如果我们正在扩展一个类,我们需要添加括号(对于隐式构造函数)

class MyClass : Any()

这类似于调用

   class MyClass extends Any
    {
      MyClass()
      {
        super();
      }
   }

但是如果我们实现一个接口(接口没有构造函数),语法应该是以下

  class MyClass : BaseInterface

答案 2 :(得分:3)

如果你有辅助构造函数(关键字constructor),你可以使用下一个语法

class MyClass : Any {
    constructor() : super()
}
  

如果类没有主构造函数,那么每个辅助构造函数都必须使用super关键字初始化基类型,或委托给另一个构造函数。

在此处阅读更多内容 - https://kotlinlang.org/docs/reference/classes.html

P.S。使用Android Studio功能可以轻松解决您的问题 - 项目快速修复(显示意图操作和快速修复)Win - Alt + Enter ,Mac - 选项 + 输入