在哪种情况下,我必须在创建构造函数时设置super()?

时间:2019-02-23 10:55:08

标签: kotlin super

我不明白何时创建构造函数,有时候我必须写这个

constructor(...):super(){}

您有一个要理解的例子吗?

1 个答案:

答案 0 :(得分:0)

考虑类Bar

open class Foo(val i: Int)

class Bar: Foo {
    constructor(i: Int): super(i)
}

由于它没有主构造函数,因此辅助构造函数需要调用其派生类(即Foo)的构造函数。

  

如果该类没有主要构造函数,则每个次要构造函数   构造函数必须使用super关键字初始化基本类型,   或委派给另一个这样做的构造函数。 (Source

在这种特殊情况下,使用主构造函数将是更好的方法:

class Bar(i: Int): Foo(i)
  

如果派生类具有主构造函数,则基类可以   (并且必须)使用的参数在此处初始化   主要构造函数。 (Source