- get() set() 함수 내부에서는 프로퍼티 값을 filed로 접근
- var로 선언한 프로퍼티는 모두 정의 가능/ val로 선언 시 set()정의 불가능
- val로 선언한 프로퍼티는 get() 함수 초깃값 명시 안해도됨
- var로 선언한 프로퍼티는 get() 함수 초깃값 명시 해야함
class User {
var data: String
val data2: Int
init {
data = "kkang"
data2 = 10
}
}
fun main (args: Array<String>){
val user = User()
println("data: ${user.data}")
println("data2: ${user.data2}")
}
🖥
data: kkang
data2: 10
class User {
lateinit var lateData: String
}
fun main (args: Array<String>){
val user = User()
user.lateData = "hello"
println(user.lateData)
}
🖥
hello
- 호출 시점에 초기화 진행
- val로 선언한 프로퍼티에만 사용 가능
- 클래스 몸체 이외에 최상위 레벨에서 사용 가능
- 기초 타입에도 사용 가능
val someData: String by lazy{
println("i am someData lazy")
"hello"
}
class User {
val name: String by lazy{
println("name lazy")
"kkang"
}
init {
println("init")
}
constructor(){
println("constructor")
}
}
fun main (args: Array<String>){
val user = User()
println("${user.name}")
}
🖥
init
constructor
name lazy
kkang