Kotlin,子类的辅助构造函数

had*_*ilq 3 syntax kotlin

我试着像这样调用父的第二个构造函数

abstract class A(val i: Int) {
    constructor(c: C) : this(c.i)
}

class B() : A(0) {
    constructor(c: C) : super(c) // error is here
}

class C(val i: Int)
Run Code Online (Sandbox Code Playgroud)

但它会产生Primary constructor call expected错误.子类如何调用父的辅助构造函数?

jay*_*917 6

根据文件:

如果类具有主构造函数,则每个辅助构造函数需要直接或间接通过另一个辅助构造函数委托给主构造函数.使用this关键字完成对同一类的另一个构造函数的委派

您为B(ie B())声明了一个主构造函数,因此辅助构造函数应该调用它的主构造函数.

子类如何调用父的辅助构造函数?

如果希望辅助构造函数调用父代的辅助构造函数,则应首先删除B主构造函数.

abstract class A(val i: Int) {
    constructor(c: C) : this(c.i)
}

class B : A {
    constructor(c: C) : super(c)
}

class C(val i: Int)
Run Code Online (Sandbox Code Playgroud)