프로그래밍/Kotlin
[코틀린 / Kotlin] getter와 setter
pupu91
2022. 10. 20. 16:29
반응형
getter와 setter 사용 예시
class GetterAndSetterDemo(){
/* 아래의 코드 처럼 작성하면 x*/
var num: Int = 0
set(value){
println("값을 ${value}로 설정")
num = value
this.setNum(value); //재귀 호출 동작 -> 스택 오버 플로우 발생하기 때문에 field사용해 주어야 함
}
/* field 사용하기 */
set(value) {
println("값을 ${value}로 설정")
field = value //field는 num 필드를 의미(백킹 필드 - 재귀호출 방지)
}
get(){
println("${field}값을 반환")
return field
}
}
fun main(){
var demo = GetterAndSetterDemo()
demo.num = 100 //setter 호출
println(demo.num) //getter 호출 후 값 반환
}
출력 결과
값을 100로 설정
100값을 반환
100
값을 검증하는 setter와 값을 가공해서 반환하는 getter 메소드 정의 클래스
class Person(val name: String, pAge: Int){
var age: Int = 0
set(value){
when{
value < 0 -> throw Exception("음수 나이는 허용되지 않습니다.")
value > 200 -> throw Exception("나이가 비정상적으로 많습니다.")
}
field = value //when에 걸리지 않았을때 값을 담겠다.
}
/ *pAge: Int 값을 받아 왔을때 init 블럭을 통해 초기화 시키기*/
init{
//주생성자가 동작한다음에 init 동작. age 값 수치에 따라서 set 동작
age= pAge
}
}
fun main(){
var p1 = Person("스폰지밥", 15)
println(p1.name)
println(p1.age)
}
출력 결과
스폰지밥
15
Exception in thread "main" java.lang.Exception: 음수 나이는 허용되지 않습니다.
반응형