【发布时间】:2019-11-24 21:01:01
【问题描述】:
我一直在学习 Kotlin,目前面临两个问题。
私有构造函数有什么用?
私人的有什么用 构造函数中的参数?
我们甚至无法创建具有私有构造函数的类的实例
构造函数中的私有参数...
因此,它们将仅在该类中可见?但是,他们这样做了,并且在构造函数中没有 private 修饰符。
感谢任何帮助!
【问题讨论】:
标签: kotlin constructor visibility access-modifiers
我一直在学习 Kotlin,目前面临两个问题。
私有构造函数有什么用?
私人的有什么用 构造函数中的参数?
我们甚至无法创建具有私有构造函数的类的实例
构造函数中的私有参数...
因此,它们将仅在该类中可见?但是,他们这样做了,并且在构造函数中没有 private 修饰符。
感谢任何帮助!
【问题讨论】:
标签: kotlin constructor visibility access-modifiers
私有构造函数
类似于java。如果类只有私有构造函数,您可以禁止创建类实例。或者您可以允许此类负责创建其实例(就像在单例模式中所做的那样)。
class Singleton private constructor(val name: String) {
companion object {
fun getInstance(): Singleton {
return Singleton() // Simplified
}
}
}
构造函数私有参数
如果类C 的构造函数具有val s: String 参数,则它成为实例公共属性属性,并且可以像C.s 一样访问。如果我们将这些参数声明为private,它将成为实例私有属性。
class Holder(private val pri: String, val pub: String) {
}
val holder = Holder("private", "public")
holder.pub // contains "public"
holder.pri // not accessible
【讨论】:
这和Java私有构造函数一样,你可以使用伴生对象方法来实例化类。
class Foo private constructor(val someData: Data) {
companion object {
fun constructorA(): Foo {
// do stuff
return Foo(someData)
}
}
// ...
}
【讨论】: