
108 第
4
章
initialize properties before you use them
你必须初始化所有属性
在第
2
章中,你已经了解到每一个在函数中使用的变量都必须被初
始化。这条规则对于类同样适用:你必须在使用类的属性前对其进
行初始化。初始化属性十分重要,如果你在属性声明或初始化块中
声明属性而没有初始化它,编译器将无法正常编译代码。例如,下
面的代码示例将无法被正常编译。这是因为我们在加入新的名为
temperament属性时没有对其进行初始化:
class Dog(val name: String, var weight: Int, breed_param: String) {
var activities = arrayOf("Walks")
val breed = breed_param.toUpperCase()
var temperament: String
...
}
你可以在几乎任意时刻对属性分配默认值。例如,在上面的例子
中,你可以将temperament属性初始化为"",此时代码将能正常
编译,如下代码所示:
var temperament = ""
由于
temperament
属性没有被初始化
,
所以这段代码不能被编译
。
这会将
temperament
属性初始化为空的字符串
。
问
:
在
Java
中
,
你不需要初始化类中所定义的变量
。
在
Kotlin
中有没有方法可以不初始化类的属性
?
答
:
如果你无法在类的初始化时为属性分配初始值
,
你可以使用
lateinit作为前缀
。
这告诉编译器你知道