gpt4 book ai didi

inheritance - 如何在子类中将多个父类构造函数与 val 混合

转载 作者:行者123 更新时间:2023-12-04 21:56:19 27 4
gpt4 key购买 nike

假设我有一个 Parent 类,它有四个字段 A、B、C 和 D,这样 C 和 D 可以选择传递或使用默认实现进行初始化:

open class Parent(val a: A, val b: B, val c: C, val d: D) {
constructor(a: A, b: B, c: C): this(a, b, c, DImpl()){}
constructor(a: A, b: B): this(a, b, CImpl(), DImpl()){}
}

我需要扩展这个类并向子类添加另一个字段:
class Child: Parent {
val e: E // How do I initialize this?
}

通过 val到辅助构造函数不起作用,使用 init{} 也不起作用堵塞。

通过 val到主构造函数可以工作,但是我失去了对 Parent 中的辅助构造函数的委托(delegate)类 - 我需要使用所有 Parent具有所有参数的构造函数或复制辅助​​构造函数,将实现细节泄漏到 Child类(class)。

这应该很简单,我在这里遗漏了什么吗?

最佳答案

如果您确实需要使用辅助构造函数,并且不能使用@Ingo Kegel 建议的默认值,您可以初始化 e就像在 Java 中一样,通过将参数值分配给属性:

class Child: Parent {
val e: E

constructor(a: A, b: B, c: C, d: D, e: E) : super(a, b, c, d) {
this.e = e
}
}

关于inheritance - 如何在子类中将多个父类构造函数与 val 混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35694676/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com