我有抽象的A类和一些字段
public abstract class A {
var name: String = "Empty name"
}
并希望继承它
public class B(name: String) : A() {
init {
this.name = name
}
}
有没有办法不创建init块并像name
一样执行class B(::name: String)
的单行初始化?
答案 0 :(得分:1)
不,对于未在父类primary constructor中声明的属性,无法做到这一点。
但您可以转换添加主构造函数的示例:
public abstract class A(var name: String = "Empty name")
public class B(name: String) : A(name)
答案 1 :(得分:1)
您可以使用override
注释
abstract class A {
open val name: String = "Empty name"
}
class B(override val name: String) : A()
答案 2 :(得分:0)
您可以在name
中abstract
open
或override
然后B
。 e.g:
public abstract class A {
open var name: String = "Empty name"
}
public class B(name: String) : A() {
override var name: String = name
}
&#34>"""构造函数但它可能满足您的需求。