get(), set()

Seogi·2024년 1월 5일

Kotlin

목록 보기
1/27

get(), set()

코틀린 코딩 컨벤션을 보다보면 아래와 같은 get()함수가 심심치 않게 보인다.

class C {
    private val _elementList = mutableListOf<Element>()

    val elementList: List<Element>
         get() = _elementList
}

구글링을 해보니 아래와 같은 답을 찾을 수 있었다.

짧은 답

get()은 사용자 정의 getter메소드를 정의하는데 사용된다. property에 접근할때마다 사용자 정의 getter를 사용한다.

긴 답

객체지향 프로그래밍에서 클래스의 주요 아이디어는 단일 클래스의 데이터와 데이터에 대해 작동하는 코드를 캡슐화하는 것이다. Java와 같은 언어에서는 클래스의 데이터가 private fields에 저장되고 접근자 메서드(gette, setter)를 사용하여 데이터에 접근한다. Java에서는 접근자 메서드와 필드의 조합을 property라고 한다.

코틀린에서는 작업이 조금 다르게 수행된다. val 또는 var키워드를 사용할 때, 코틀린이 자동으로 해당필드에 접근자 메서드를 생성한다.

코틀린이 만든 접근자 메서드보다 강력한 솔루션이 필요할 때가 올 수있다. 이때 get()set()이 들어온다. get()을 사용하면 property에 접근할 때 사용할 사용자 정의 접근자 메서드(get()getter)를 정의하게 된다.

이때, val은 불변이기에 set()메소드를 정의하는 것은 허락하지 않고 get()만 가능하다.

var error: String
    get() = login_error.text.toString()
    set(value){
        login_error.text = value;
    }

0개의 댓글