[코틀린] 프로퍼티
💌 프로퍼티
📌 코틀린에서 프로퍼티 이용
💜 프로퍼티란?
- 클래스의 변수 (ex/ var, val)
- 변수처럼 보이지만 함수가 내장된 변수
- 내부적으로 getter/setter 함수 추가됨
💜 사용자 정의 프로퍼티
- get() set() 함수 내부에서는 프로퍼티 값을 filed로 접근
- var로 선언한 프로퍼티는 모두 정의 가능/ val로 선언 시 set()정의 불가능
- val로 선언한 프로퍼티는 get() 함수 초깃값 명시 안해도됨
- var로 선언한 프로퍼티는 get() 함수 초깃값 명시 해야함
📌 프로퍼티 초기화
💜 초기화 블록(init)에서 초기화
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}")
}
- 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
💜 Null 허용으로 선언
- 프로퍼티 선언 시 null로 초기화한 후 실제 데이터로 값 변경
💜 늦은 초기화
- lateinit
class User {
lateinit var lateData: String
}
fun main (args: Array<String>){
val user = User()
user.lateData = "hello"
println(user.lateData)
}
🖥
hello
💜 초기화 미루기
- by lazy
- 호출 시점에 초기화 진행
- 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
Author And Source
이 문제에 관하여([코틀린] 프로퍼티), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@soyoung-dev/프로퍼티저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)