본문 바로가기

Study/Kotlin

Kotlin 기본 문법 따라하기 - 4. Properties and fields

Kotlin 기본 문법 따라하기

 

Properties and Fields: Getters, Setters, const, lateinit - Kotlin Programming Language

 

kotlinlang.org

package com.kotlintest.test


class MainProClass() {
    fun main() {

        var address = Address()
        println("city : ${address.city} - ${address.isSeoul}")

        address.city = "Seoul"
        println("city : ${address.city} - ${address.isSeoul}")


        println("street : ${address.street}")

        address.street = "ssing"
        println("street : ${address.street}")

        println("counter : ${address.counter}")
        address.addWor("prvate_set_test")
        println("counter : ${address.counter}")
    }
}


class Address {
    var name: String = "Holmes, Sherlock"
    var street: String = "Baker"
        set(value: String) {
            println("""Address was changed for "$field" -> "$value". """.trimIndent())
            field = value.plus(" street") // 변경할 때 backing field 에 값을 넣어준다.
        }
    var city: String  = "London"
    val isSeoul: Boolean get(){ return city == "Seoul" }

    var counter: Int = 0
        private set

    fun copyAddress(address: Address): Address {
        val result = Address() // there's no 'new' keyword in Kotlin
        result.name = address.name // accessors are called
        result.street = address.street
        // ...
        return result
    }

    fun addWor(word: String) {
        counter += word.length
    }
}

 

city : London - false
city : Seoul - true
street : Baker
Address was changed for "Baker" -> "ssing". 
street : ssing street
counter : 0
counter : 15