扩展类父参数的默认值

EC8*_*4B4 2 constructor instantiation instance default-parameters kotlin

我有B带有 to 参数的类x,并yA带有x可选参数的类扩展(所有参数都非空),我如何B以一种方式定义它是可选的,并且它将在构造函数中使用可选值A

val y = 0
val b = if (y == 0) B(y) else B(y, 0)

class B(y: Int, x: Int = 238) : A(x)

open class A(x: Int = 238)
Run Code Online (Sandbox Code Playgroud)

x在这里,我已经在构造函数中设置了默认值,B有什么方法可以实现这一点,而不必在中设置默认值B

Jan*_*son 5

您可以使用辅助构造函数来实现此目的。

class B : A {
    constructor(y: Int): super()
    constructor(y: Int, x: Int): super(x)
}
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅Kotlin 文档

编辑:

正如 @PietroMartinelli 提到的,如果您需要主构造函数,则辅助构造函数将不起作用。如果派生类具有主构造函数,则可以(并且必须)使用主构造函数的参数就地初始化基类。