Kotlin 멤버 변수 get/set

|

코틀린에서는 변수 선언만 하면 컴파일러가 자동으로 get/set 함수를 생성해줍니다.

class Person() {
    var name: String = ""
    var age: Int = 0
}

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        var p = Person()
        p.name = "snowdeer"
        p.age = 30
    }
}


get/set 함수 오버라이딩

class Person() {
    var name: String = ""
        set(name) {
            field = "[-- $name --]"
        }
        get() = "Hello, " + field


    var age: Int = 0
}

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        var p = Person()
        p.name = "snowdeer"
        p.age = 30

        Log.i("snowdeer", "snowdeer] " + p.name)
    }
}

실행 결과는 다음과 같습니다.

Hello, [-- snowdeer --]

만약 외부에서 set 함수에 접근하지 못하게 하려면 private 키워드를 사용하면 됩니다.

class Person() {
    var name: String = ""
        private set(name) {
            field = "[-- $name --]"
        }
        get() = "Hello, " + field
}