繁体   English   中英

kotlin 在密封的 class 中声明 Object 并初始化

[英]kotlin declaring Object within sealed class and initialized

sealed class StockLabel : Label() {
  object OutOfStockLabel : StockLabel()
}

我知道 kotlin 中的 sealed class 是隐式抽象的,如果这样做我们会得到编译错误。 但是我看到了上面代码的用法,'OutOfStockLabel' 是在'StockLabel' sealed class 中声明的,也用'StockLabel()','StockLabel()' 我认为应该是 'OutOfStockLabel' 的类型但是是吗在这里进行初始化还是?

需要一些帮助来理解这里的代码案例。

虽然语法看起来很相似,但这段代码:

object OutOfStockLabel : StockLabel()

是定义 class 的语法,而不是创建抽象 class 的实例。您正在声明一个子类(在本例中为object ),其主构造函数(对于object是隐式的)调用抽象类的构造函数。 这对于抽象类是允许的。 如果不能,则不可能创建抽象 class 的任何子类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM