【发布时间】:2019-02-10 06:21:43
【问题描述】:
Sealed class in Kotlin 只能有 private 构造函数。这意味着我们只能调用构造函数本身:
密封类不允许有非私有的构造函数(它们的构造函数默认是私有的)。
// `private` and `constructor()` are redundant.
sealed class Expr private constructor()
但是,当我们使用密封类时,子类必须继承密封类:
// Above Kotlin 1.1
data class Const(val number: Double) : Expr()
data class Sum(val e1: Expr, val e2: Expr) : Expr()
正如您在上面的代码中看到的,密封类的private 构造函数是在密封类本身之外调用的。子类实例化时,先调用父类(密封类)的构造函数,再调用子类自己的构造函数。它只是可见性修饰符的例外吗?
https://kotlinlang.org/docs/reference/visibility-modifiers.html#classes-and-interfaces
对于在类中声明的成员:
private表示仅在该类中可见(包括其所有成员);
【问题讨论】:
标签: kotlin