携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的9天,点击查看活动详情
为了活动小家电吗,接着上篇搞!
以java风格初始化成员变量
让我们像在java中一样初始化成员变量。
var name, age, birthday创建每个并初始化它们,如下所示。
class Sample {
var name: String = ""
var age: Int = 0
var birthday: String = ""
constructor(name: String) {
this.name = name
}
constructor(name: String, age: Int): this(name) {
this.age = age
}
constructor(name: String, age: Int, birthday: String): this(name, age) {
this.birthday = birthday
}
}
我带来了我在java中看到的代码风格。默认在java中不起作用。
构造函数中的val、var使用
在构造函数中,只能var/val在顶级函数中使用这个。
init {}``constructor从定义的内容可以知道
constructor所以,在定义的时候,只能在最上层定义var/val。
否则,您需要var定义并包含this.name = name.
现在default再来看看我们定义为值的代码。
class Sample constructor(val name: String, val age: Int = 0, val birthday: String = "")
省略构造函数
class Sample(val name: String, val age: Int = 0, val birthday: String = "")
可以如上定义。
如果你上面做了,Overloading你就不能在java中做到这一点。
使用 kotlin 构造函数和初始化
将构造函数和init结合起来使用java,推荐下面用的方式定义构造函数。
添加到顶级函数val name: String, val age: Int, val birthday: String。
并且构造函数的其余部分被定义为只接收变量值。
init {}您可以在。
class Sample(val name: String, val age: Int = 0, val birthday: String = "1111-01-01") {
constructor(name: String, age: Int): this(name, age, "1111-01-01")
constructor(name: String): this(name, 10)
init {
println("名字: $name 年龄: $age 生日: $birthday")
}
}
- Sample("帅哥1",18,"1112-01-01")
- Sample("帅哥2",19)
- Sample("帅哥3")
如上定义并输出,可以得到如下结果。
名字: 帅哥1 年龄: 18 生日: 1112-01-01
名字: 帅哥2 年龄: 19 生日: 1111-01-01
名字: 帅哥3 年龄: 10 生日: 1111-01-01
总结
kotlin 中的类在顶部包含一个省略号constructor()。
所以init {}这总是首先被调用。
Java 必须定义一个样式才能有样式构造函数来拥有或拥有,或者最好使用最后推荐的方式
毕竟在java中不使用的话,定义好默认是没有问题的。