Inheritance 初始化子'中的抽象类字段;s构造函数
我有一个抽象类A和一些字段Inheritance 初始化子'中的抽象类字段;s构造函数,inheritance,kotlin,Inheritance,Kotlin,我有一个抽象类A和一些字段 public abstract class A { var name: String = "Empty name" } 想继承它吗 public class B(name: String) : A() { init { this.name = name } } 是否有一种方法可以不创建init块,而像类B(::name:String)那样执行名称的一行init?否,对于未在父类中声明的属性,没有方法这样做 但您可以通过添加主
public abstract class A {
var name: String = "Empty name"
}
想继承它吗
public class B(name: String) : A() {
init {
this.name = name
}
}
是否有一种方法可以不创建init块,而像
类B(::name:String)
那样执行名称的一行init?否,对于未在父类中声明的属性,没有方法这样做
但您可以通过添加主构造函数来转换示例:
public abstract class A(var name: String = "Empty name")
public class B(name: String) : A(name)
您可以使name
abstract
或打开
,然后在B
中覆盖它。e、 g:
public abstract class A {
open var name: String = "Empty name"
}
public class B(name: String) : A() {
override var name: String = name
}
它并不完全“在”构造函数中,但它可能满足您的需要。您可以使用override
注释
abstract class A {
open val name: String = "Empty name"
}
class B(override val name: String) : A()
在构造函数中有创建字段的权限,却没有对init existing的访问权限,这看起来很奇怪。不需要重写,只需要对init进行访问