본문 바로가기

공부 자료/코틀린[Kotlin]

[Atomic 28] 프로퍼티 접근자(feat. getter / setter)

프로퍼티 이름을 사용해 프로퍼티 읽고 쓰기

 

 

오늘은 프로퍼티 접근자를 작성해서 프로퍼티를 읽고 쓰는 연산을 커스텀화 하는 학습에 대한 아톰이다.

 


 

[ 게터(getter) / 세터(setter) ]

게터(getter)

: 프로퍼티 값을 얻기 위해 사용하는 접근자

: 프로퍼티 정의 다음에 get() 정의 시 게터 정의

: get() 정의 시 연결된 프로퍼티 보다 안쪽으로 들여씀

: field 이름을 사용해 저장된 값에 직접 접근 가능

 

세터(setter)

: 가변 프로퍼티를 갱신하기 위해 사용하는 접근자

: 프로퍼티 정의 다음에 set() 정의 시 세터 정의

: set() 정의 시 연결된 프로퍼티 보다 안쪽으로 들여씀

: field 이름을 사용해 저장된 값에 직접 접근 가능

 

 

import atomictest.*

class Default{
	var i:Int = 0
     get(){
     	trace("get()") return field
     }
     set(value){
     	trace("set($value)") field = value
     }
}

fun main(){
	val d = Default()
    d.i = 2
    trace(d.i)
	trace eq """
    	set(2)
        get()
        2
    """
}

 

 

 


 

[ 프로퍼티 접근자 ]

 

프로퍼티 접근자

- 프로퍼티에 대한 일종의 보호 수단을 제공

- 객체 지향 언어가 프로퍼티에 대한 접근을 제어하기 위해 물리적인 필드를 private으로 정의하는 방식에 의존하지만, 프로퍼티 접근자 사용 시 필드 접근과 같은 방식으로 쉽게 프로퍼티에 접근하도록 허용함과 동시에 프로퍼티 접근을 제어하거나 변경할 수 있는 코드를 쉽게 추가 가능

- private으로 정의하면 접근자를 private으로 만들 수 있음

- get / set 둘 중 하나면 private으로도 만들 수 있으며, get을 public/set을 private으로 정의 시 클래스 외부에서 프로퍼티 값을 읽을 수는 있지만 값은 내부에서만 변경 가능한 상태로 만들 수 있음

 

 


 

[ 오늘의 학습 소감 ]

 

오늘은 프로퍼티 접근자인 게터와 세터에 대해서 학습한 아톰이었는데, 자바 스프링으로 코드를 짜면서 게터와 세터를 많이 사용하는 만큼 코틀린에서도 게터와 세터는 중요한 부분이 아닐까 생각이 들었다. 그렇기에 다시 한 번 봐야할 부분에 꼽지 않을까 라는 생각이 들었고, 설명이 있는 부분 중 이해가 가지 않은 부분도 생각보다는 많은 상황이었다. (아마 명칭에 대한 정확한 이해가 되지 않은 상태에서 문장을 이해하려고 해서 그런것이 아닐까 싶다.) 그렇기에 보충이 필요한 아톰이 되어버렸지만, 그만큼 기억에 남는 아톰 학습이 되지 않을까 싶다.