因为我有一个User
类有2个参数:first_name,last_name。所以我科特林类为:构造函数与Kotlin重载
data class User(val first_name:String, val last_name:String)
现在我想一个构造函数,将只接受first_name
,或者可以说只是一个参数。我如何用Kotlin
来定义它?
我知道我们可以通过默认值,并以这种方式我们可以忽略第二个参数,但我们如何编写多个构造函数?
因为我有一个User
类有2个参数:first_name,last_name。所以我科特林类为:构造函数与Kotlin重载
data class User(val first_name:String, val last_name:String)
现在我想一个构造函数,将只接受first_name
,或者可以说只是一个参数。我如何用Kotlin
来定义它?
我知道我们可以通过默认值,并以这种方式我们可以忽略第二个参数,但我们如何编写多个构造函数?
Kotlin中的类可以具有主构造函数和一个或多个辅助构造函数。主构造函数是类头的一部分:它在类名(和可选的类型参数)之后。
class Person constructor(firstName: String) {
}
如果主构造没有任何注释或能见度改性剂,可以省略构造关键字:
class Person(firstName: String) {
}
注意,主构造的参数可以在初始化块中使用。
class Customer(name: String) {
val customerKey = name.toUpperCase()
}
您也可以按照这个链接根据自己的需要:他们也可以在类体内声明的属性初始化使用Kotlin
您可以在类体内定义额外的构造
data class User(val firstName: String, val lastName: String) {
constructor(firstName: String) : this(firstName, "")
}
这些“辅助构造函数”必须调用主构造函数或不同的辅助构造函数。请参阅Official documentation on constructors。
所以,实际上这与带有默认参数的主要构造函数是一样的,这将是惯用的方式。
data class User(val firstName: String, val lastName: String = "")
我希望这将有助于你
class Person(val name: String, val age: Int = 0) {
override fun toString(): String {
return name + " is " + age + " years Old"
}
}
fun main(args: Array<String>) {
var person = Person(name = "vignesh")
var personNew = Person("vignesh", 23)
println(person.toString())
println(personNew.toString())
}
输出
维涅什是0岁
维涅什是23岁
这种情况..你不”我想创建另一个构造函数..因为在Kotlin中,我们可以使用参数作为可选项 –
https://kotlinlang.org/docs/reference/classes.html –
为什么你想要第二个构造函数而不是last_name的默认值?顺便说一下,在java和kotlin中,你应该使用CamelCase而不是SnakeCase – D3xter