Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Syntax Kotlin,子类的二级构造函数_Syntax_Kotlin - Fatal编程技术网

Syntax Kotlin,子类的二级构造函数

Syntax Kotlin,子类的二级构造函数,syntax,kotlin,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) 但它会生成预期的主构造函数调用错误。子类如何调用父类的二级构造函数?根据: 如果类有一个主构造函数,每个次构造函数 需要直接或间接委托给主构造

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

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)
但它会生成预期的
主构造函数调用
错误。子类如何调用父类的二级构造函数?

根据:

如果类有一个主构造函数,每个次构造函数 需要直接或间接委托给主构造函数 间接通过另一个二级构造函数。使用this关键字完成对同一类的另一个构造函数的委托

您为
B
(即
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)