3

Kotlin 文档说

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

如果我尝试从 Any 显式继承:

class MyClass : Any {

}

编译器给出错误:

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

我无法找到 Any 类的文档。是否可以从 Any 显式继承,如果可以,你会传递什么?

4

3 回答 3

7

您必须显式调用构造函数:

class MyClass : Any()

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

于 2014-02-24T06:50:26.600 回答
5

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

class MyClass : Any()

这类似于调用

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

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

  class MyClass : BaseInterface
于 2017-05-25T11:27:35.160 回答
4

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

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

如果该类没有主构造函数,则每个辅助构造函数都必须使用 super 关键字初始化基类型,或者委托给执行此操作的另一个构造函数。

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

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

于 2018-03-17T12:17:35.223 回答